Operator Precedence
Parte de la sección Fundamentos del Journey de PHP de Coddy — lección 20 de 71.
Cuando una expresión contiene múltiples operadores, PHP sigue un orden específico llamado precedencia de operadores. Al igual que en matemáticas, la multiplicación y la división se realizan antes que la suma y la resta.
<?php
echo 5 + 3 * 2; // Salida: 11, no 16
?>PHP multiplica primero 3 × 2 (obteniendo 6), luego suma 5. Si los operadores tuvieran la misma prioridad, calcularía de izquierda a derecha: 5 + 3 = 8, luego 8 × 2 = 16. Pero no es así como funciona.
Aquí está la precedencia de mayor a menor para los operadores que has aprendido:
| Prioridad | Operadores |
| Más alta | ** (exponenciación) |
| Alta | * / % |
| Baja | + - |
Para anular el orden predeterminado, utilice paréntesis. Las operaciones dentro de los paréntesis siempre se evalúan primero:
<?php
echo (5 + 3) * 2; // Salida: 16
echo 2 ** 3 * 2; // Salida: 16 (8 * 2)
echo 2 ** (3 * 2); // Salida: 64 (2^6)
?>Cuando tengas dudas, usa paréntesis para dejar claras tus intenciones. Esto hace que tu código sea más fácil de leer y previene resultados inesperados.
Desafío
FácilLee tres números de la entrada: a, b y c.
Calcula e imprime el resultado de la siguiente expresión, usando paréntesis para asegurar que la suma ocurra antes de la multiplicación:
(a + b) * c ** 2
Esto significa: primero suma a y b, luego multiplica esa suma por c elevado a la potencia de 2.
Ejemplo:
Si las entradas son 2, 3 y 4, la salida debería ser 80 porque:
- Primero, suma 2 + 3 = 5
- Luego, calcula 4 ** 2 = 16
- Finalmente, multiplica 5 * 16 = 80
Hoja de referencia
PHP sigue las reglas de precedencia de operadores al evaluar expresiones con múltiples operadores:
| Prioridad | Operadores |
| Más alta | ** (exponentiation) |
| Alta | * / % |
| Baja | + - |
<?php
echo 5 + 3 * 2; // Outputs: 11 (multiplication first)
?>Usa paréntesis para anular el orden predeterminado. Las operaciones dentro de los paréntesis se evalúan primero:
<?php
echo (5 + 3) * 2; // Outputs: 16
echo 2 ** 3 * 2; // Outputs: 16 (8 * 2)
echo 2 ** (3 * 2); // Outputs: 64 (2^6)
?>Pruébalo tú mismo
<?php
// Leer entrada
$a = intval(fgets(STDIN));
$b = intval(fgets(STDIN));
$c = intval(fgets(STDIN));
// TODO: Escribe tu código a continuación para calcular (a + b) * c ** 2
// Imprimir el resultado
echo $result;
?>Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones 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