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.

  1. 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.
  2. Exponeciação tem a segunda precedência mais alta, assim 2**1+1 é 3 e não 4, e 3*1**3 é 3 e não 27. Você pode explicar o porquê?
  3. 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, e 5-2*2 é 1 e não 6.
  4. 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 seria 6-(3+2) que é 1.

Note

Devido a alguma peculiaridade histórica, 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

Next Section - Funções para conversão de tipo