Operator Precedence
Parte da seção Fundamentos do Journey de PHP da Coddy — lição 20 de 71.
Quando uma expressão contém múltiplos operadores, o PHP segue uma ordem específica chamada precedência de operadores. Assim como na matemática, a multiplicação e a divisão são realizadas antes da adição e da subtração.
<?php
echo 5 + 3 * 2; // Saída: 11, não 16
?>O PHP multiplica 3 × 2 primeiro (obtendo 6), depois soma 5. Se os operadores tivessem prioridade igual, calcularia da esquerda para a direita: 5 + 3 = 8, depois 8 × 2 = 16. Mas não é assim que funciona.
Aqui está a precedência de maior a menor para os operadores que você aprendeu:
| Prioridade | Operadores |
| Mais alta | ** (exponenciação) |
| Alta | * / % |
| Baixa | + - |
Para alterar a ordem padrão, use parênteses. Operações dentro dos parênteses são sempre avaliadas primeiro:
<?php
echo (5 + 3) * 2; // Outputs: 16
echo 2 ** 3 * 2; // Outputs: 16 (8 * 2)
echo 2 ** (3 * 2); // Outputs: 64 (2^6)
?>Quando em dúvida, use parênteses para tornar suas intenções claras. Isso torna seu código mais fácil de ler e previne resultados inesperados.
Desafio
FácilLeia três números da entrada: a, b e c.
Calcule e imprima o resultado da seguinte expressão, usando parênteses para garantir que a adição ocorra antes da multiplicação:
(a + b) * c ** 2
Isso significa: primeiro some a e b, depois multiplique essa soma por c elevado à potência de 2.
Exemplo:
Se as entradas forem 2, 3 e 4, a saída deve ser 80 porque:
- Primeiro, some 2 + 3 = 5
- Depois, calcule 4 ** 2 = 16
- Finalmente, multiplique 5 * 16 = 80
Folha de consulta
O PHP segue regras de precedência de operadores ao avaliar expressões com múltiplos operadores:
| Prioridade | Operadores |
| Mais alta | ** (exponentiation) |
| Alta | * / % |
| Baixa | + - |
<?php
echo 5 + 3 * 2; // Saída: 11 (multiplicação primeiro)
?>Use parênteses para alterar a ordem padrão. As operações dentro dos parênteses são avaliadas primeiro:
<?php
echo (5 + 3) * 2; // Saída: 16
echo 2 ** 3 * 2; // Saída: 16 (8 * 2)
echo 2 ** (3 * 2); // Saída: 64 (2^6)
?>Experimente você mesmo
<?php
// Lê a entrada
$a = intval(fgets(STDIN));
$b = intval(fgets(STDIN));
$c = intval(fgets(STDIN));
// TODO: Escreva seu código abaixo para calcular (a + b) * c ** 2
// Exibe o resultado
echo $result;
?>Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types5Conditional Logic
If StatementIf - ElseThe Ternary OperatorNull Coalescing OperatorSwitch StatementRecap - Making Decisions3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators