Ordem de Operações¶
Quando mais de um operador aparece em um expressão, a ordem em que são realizadas as operações dependem das regras de precedência (rules of precedence). Python segue as regras de precedência dos seus operadores matemáticos da mesma forma que matemática.
- Parênteses têm a mais alta precedência e podem ser usados para forçar que uma expressão seja
calculada na ordem que você deseja. Como expressões entre parênteses são calculadas primeiro,
2*(3-1)
é 4, e(1+1)**(5-2)
é 8. Você pode usar parênteses para tornar uma expressão mais legível, como em(minutos * 100) / 60
, mesmo que isto não mude o resultado. - Exponeciação tem a segunda precedência mais alta, assim
2**1+1
é 3 e não 4, e3*1**3
é 3 e não 27. Você pode explicar o porquê? - Multiplicação e ambas as divisões têm a mesma precedência, que são mais altas que adição e
subtração, que também têm a mesma precedência. Logo,
2*3-1
é 5 e não 4, e5-2*2
é 1 e não 6. - Operadores com a mesma precedência são executados da esquerda para a direita. Em álgebra dizemos
que eles são associativos à esquerda (left-associative). Desta forma, na expressão
6-3+3
a subtração é realizada primeiro e tem como resultado 3. Depois adicionamos 2 e obtemos o resultado 5. Se os operadores tivessem sido executados da direira para a esquerda o resultado seria6-(3+2)
que é 1.
Note
Devido a alguma peculiaridade história, uma exceção à regra associativa à esquerda é o operador de exponenciação, **. Uma dica útil é sempre usar parênteses para forçar exatamente a ordem que você deseja quando há exponenciação no cálculo:
Teste seu entendimento
- 14
- Usando parênteses, a expressão é calculada primeiro como (2*5), depois (10 // 3), depois (16-3), e finalmente (13+1).
- 24
- Lembre-se que * tem precedência sobre -.
- 3
- Lembre-se que // tem precedência sobre -.
- 13.667
- Lembre-se que // faz a divisão inteira.
data-9-1: Qual é o valor da expressão abaixo?
16 - 2 * 5 // 3 + 1
- 768
- Exponenciação tem precedência sobre multiplicação, mas sua precedência vai da direita para a esquerda! Portanto, 2 ** 3 é 8, 2 ** 8 é 256 e 256 * 3 é 768.
- 128
- Exponenciação (**) é processada da direita para a esquerda, logo faz 2 ** 3 primeiro.
- 12
- Há duas exponenciações.
- 256
- Lembre-se de multiplicar por 3.
data-9-2: Qual é o valor da expressão abaixo?
2 ** 2 ** 3 * 3