Arithmetic Order of Operations for the Ruby Language
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.
• Watch Guide Video
Video locked
This video is viewable to users with a Bottega Bootcamp license

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.