CON · Concepto 3 · Operadores y expresiones

15.Precedencia de operadores

Las reglas que deciden qué operación se calcula primero en una expresión; como en matemáticas, multiplicar va antes que sumar, salvo que haya paréntesis.

¿Qué es?

La precedencia es el orden en que se resuelven las operaciones de una expresión. Igual que en matemáticas, 2 + 3 * 4 da 14 y no 20: primero se multiplica y después se suma.

Es como las reglas de un examen de operaciones combinadas: los paréntesis primero, luego las potencias, luego multiplicaciones y divisiones, y al final sumas y restas.

Orden en Python (de mayor a menor prioridad)

Prioridad Operadores
1 ( ) paréntesis
2 ** potencia
3 -x, +x signo
4 *, /, //, %
5 +, -
6 ==, !=, <, >, <=, >=, in
7 not
8 and
9 or

Si dos operadores tienen la misma prioridad, se resuelven de izquierda a derecha, excepto la potencia, que va de derecha a izquierda.

Sintaxis (pseudocódigo / Python)

PSeInt

Algoritmo Precedencia
	Escribir 2 + 3 * 4          // 14
	Escribir (2 + 3) * 4        // 20
	Escribir 10 - 4 - 3         // 3
	Escribir 2 ^ 3 * 2          // 16
	Escribir (8 + 6) / 2        // 7
FinAlgoritmo

Python

print(2 + 3 * 4)       # 14
print((2 + 3) * 4)     # 20
print(10 - 4 - 3)      # 3  (izquierda a derecha)
print(2 ** 3 * 2)      # 16 (potencia primero)
print(2 ** 3 ** 2)     # 512 = 2 ** 9 (potencia de derecha a izquierda)
print(-2 ** 2)         # -4 (la potencia va antes que el signo)
print((-2) ** 2)       # 4

Ejemplo guiado

Problema: calcular el promedio de tres calificaciones.

Versión con error:

# ✗ Error lógico: solo c3 se divide entre 3
c1, c2, c3 = 8, 9, 10
promedio = c1 + c2 + c3 / 3
print(promedio)   # 20.333…, no 9

Paso a paso: c3 / 3 = 3.33; luego 8 + 9 + 3.33 = 20.33.

Versión correcta:

c1, c2, c3 = 8, 9, 10
promedio = (c1 + c2 + c3) / 3
print(promedio)

Salida esperada: 9.0

Con condiciones: ¿aprueba si el promedio es 6 o más y tiene 80 % de asistencia?

promedio = 7
asistencia = 0.75
print(promedio >= 6 and asistencia >= 0.8)   # False

Primero se resuelven las comparaciones (True y False) y después el and.

Errores comunes

# ✗ Ambiguo: se evalúa como (es_alumno and tiene_credencial) or es_docente
es_alumno, tiene_credencial, es_docente = False, False, True
puede_entrar = es_alumno and tiene_credencial or es_docente
print(puede_entrar)

Buenas prácticas

  • Paréntesis para la claridad, aunque no sean necesarios.
  • Divide expresiones largas en pasos con variables intermedias.
  • Prueba con números sencillos que puedas calcular a mano.
  • No dependas de que el lector recuerde la tabla de precedencia.

Material descargable

Aún no hay material descargable para este tema. Pronto habrá cuadernillos, manuales o laboratorios.

Referencias

© solutions_ · Fundamentos de programación · 15 Precedencia de operadores