- Read Tutorial
- Watch Guide Video

When using arithmetic operators, it's important to understand the order of operations as the compiler uses a specific format to determine this order.

A good way to remember this order is with the acronym **PEMDAS** or with the sentence **Please Excuse My Dear Aunt Sally**.

What this stands for is:

- `P`

- **Parentheses**

- `E`

- **Exponent**

- `M`

- **Multiplication**

- `D`

- **Division**

- `A`

- **Addition**

- `S`

- **Subtraction**

So, what does this order mean for a problem/equation?

Let's say that we need to run an equation with all these operators, but in a different order. For example,

5 + 15 * 20 - 2 / 6 ** 3 - (3 + 1)

In the above problem, we have all the six operations included. If we run this code, it gives a value of `301`

.

To break it down, the compiler first looked for parentheses, so it computed the value `(3+1)`

, which is `4`

. Then, it handled the exponent `6**3`

, which is `216`

. Next is multiplication, so `20 * 15`

is `300`

. Now for division, `2/216`

will be equal to `0`

*(it's not really zero but we'll discuss in a future lesson)*. Next, it focuses on addition: `5 + 300`

which equals `305`

. And lastly subtraction: `305 - 4 = 301`

.

You can see it step-by-step path here:

5 + 15 * 20 - 2 / 6 ** 3 - (3 + 1) # parenthesis 5 + 15 * 20 - 2 / 6**3 - 4 # exponents 5 + 15 * 20 - 2 / 216 - 4 # multiplication 5 + 300 - 2 / 216 - 4 # division 5 + 300 - 0 - 4 # addition 305 - 0 - 4 # subtraction 301

Now, this format is not just for numbers, but also for other programming component such as conditionals *(which we will cover in a future section)*. For example, if you have a conditional like this,

if (x > 7 && y < 19) || z == 5

The value inside the parentheses will get executed first.