# 2.9. Order of OperationsΒΆ

When more than one operator appears in an expression, the order of evaluation
depends on the **rules of precedence**. Python follows the same precedence
rules for its mathematical operators that mathematics does.

- Parentheses have the highest precedence and can be used to force an
expression to evaluate in the order you want. Since expressions in
parentheses are evaluated first,
`2 * (3-1)`

is 4, and`(1+1)**(5-2)`

is 8. You can also use parentheses to make an expression easier to read, as in`(minute * 100) / 60`

, even though it doesn’t change the result. - Exponentiation has the next highest precedence, so
`2**1+1`

is 3 and not 4, and`3*1**3`

is 3 and not 27. Can you explain why? - Multiplication and both division operators have the same
precedence, which is higher than addition and subtraction, which
also have the same precedence. So
`2*3-1`

yields 5 rather than 4, and`5-2*2`

is 1, not 6. - Operators with the
*same*precedence (except for`**`

) are evaluated from left-to-right. In algebra we say they are*left-associative*. So in the expression`6-3+2`

, the subtraction happens first, yielding 3. We then add 2 to get the result 5. If the operations had been evaluated from right to left, the result would have been`6-(3+2)`

, which is 1.

Note

An exception to the left-to-right left-associative rule is the exponentiation operator **. A useful hint is to always use parentheses to force exactly the order you want when exponentiation is involved:

See Operator precedence table for *all* the operators introduced in this book.
You will also see many upcoming non-mathematical Python operators.

**Check your understanding**

- (A) 14
- Using parentheses, the expression is evaluated as (2*5) first, then (10 // 3), then (16-3), and then (13+1).
- (B) 24
- Remember that * has precedence over -.
- (C) 3
- Remember that // has precedence over -.
- (D) 13.667
- Remember that // does integer division.

data-9-1: What is the value of the following expression:

```
16 - 2 * 5 // 3 + 1
```

- (A) 768
- Exponentiation has precedence over multiplication, but its precedence goes from right to left! So 2 ** 3 is 8, 2 ** 8 is 256 and 256 * 3 is 768.
- (B) 128
- Exponentiation (**) is processed right to left, so take 2 ** 3 first.
- (C) 12
- There are two exponentiations.
- (D) 256
- Remember to multiply by 3.

data-9-2: What is the value of the following expression:

```
2 ** 2 ** 3 * 3
```