El documento explica las reglas de precedencia de operadores en JavaScript y C++. La precedencia determina el orden en que se evalúan las operaciones en una expresión. Operadores como la multiplicación tienen mayor precedencia que la suma, por lo que se evalúan primero. También se incluye una tabla con los operadores ordenados por precedencia.
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
Jerarquia y Precedencia
1. Javier Antonio Ramos Morales 4to BACO Investigación #1 Liceo Metropolitano #2 Matemáticas Precedencia de operadores La precedencia de operadores es un conjunto de reglas de JScript que controla el orden en que el compilador realiza las operaciones cuando se evalúa una expresión. Las operaciones con mayor precedencia se realizan antes que las de menor prioridad. Por ejemplo, la multiplicación se realiza antes que la suma. Tabla de precedencias La tabla siguiente muestra una lista de los operadores de JScript, en orden de precedencia de mayor a menor. Precedencia Orden de evaluación Operador Descripción 15de izquierda a derecha., [], ()Acceso a campos, indización de matrices, llamadas a funciones y agrupamiento de expresiones14de derecha a izquierda++, --, -, ~, !, delete, new, typeof, voidOperadores unarios, tipos de datos devueltos, creación de objetos, valores no definidos13de izquierda a derecha*, /, %Multiplicación, división, división módulo12de izquierda a derecha+, -Suma y concatenación de cadenas, resta11de izquierda a derecha<<, >>, >>>Desplazamiento bit a bit10de izquierda a derecha<, <=, >, >=, instanceofMenor que, menor o igual que, mayor que, mayor o igual que, instanceof9de izquierda a derecha==, !=, ===, !==Igualdad, desigualdad, igualdad estricta y desigualdad estricta8de izquierda a derecha&AND bit a bit7de izquierda a derecha^XOR bit a bit6de izquierda a derecha|OR bit a bit5de izquierda a derecha&&AND lógico4de izquierda a derecha||OR lógico3de derecha a izquierda?:Condicional2de derecha a izquierda=, OP=Asignación, asignación compuesta1de izquierda a derecha, (coma)Evaluación múltiple Los paréntesis en una expresión modifican el orden de evaluación determinado por la precedencia de operador. Esto significa que una expresión encerrada entre paréntesis se evalúa por completo antes de usar su valor en el resto de la expresión. Por ejemplo: z = 78 * (96 - 3 + 45) En la expresión anterior hay cinco operadores: =, *, (), - y +. Según las normas de precedencia de operadores, se evalúan en el siguiente orden: (), -, +, *, =. En primer lugar se realiza la evaluación de la expresión que está encerrada entre paréntesis. Dentro de los paréntesis, hay un operador de suma y otro de resta. Ambos operadores tienen la misma precedencia y se evalúan de izquierda a derecha. Primero, se resta 3 de 96, con lo que se obtiene un resultado de 93. A continuación, se suma el número 45 a 93 y se obtiene el valor 139. A continuación se realiza la multiplicación: El número 78 se multiplica por 139, con lo que se obtiene un resultado igual a 10764. Por último se realiza la asignación: El número 10764 se asigna a z. La interpretación de cualquier expresión en C++ está determinada por la precedencia y asociatividad de los operadores en dicha expresión. Cada operador tiene una precedencia, y los operadores en una expresión se evalúan en orden de mayor a menor precedencia. La evaluación de operadores con la misma precedencia viene determinada por su asociatividad. Y, al igual que en matemáticas, los paréntesis anulan las reglas de precedencia.En la siguiente tabla se listan los operadores en C++, su precedencia y su asociatividad. Los operadores se listan en orden de prioridad decreciente (los situados más arriba tienen mayor prioridad). Los operadores en la misma línea horizontal tienen la misma precedencia. Operador Propósito Asociatividad :: Scope (unario) De derecha a izquierda :: Scope (binario) De izquierda a derecha -> . Selección de miembros De izquierda a derecha [] Índices De izquierda a derecha () Llamada a función De izquierda a derecha ++ Postincremento De izquierda a derecha -- Postdecremento De izquierda a derecha sizeof Tamaño de un objeto De derecha a izquierda ++ Preincremento De derecha a izquierda -- Predecremento De derecha a izquierda * & + - ! ~ Operadores unarios De derecha a izquierda new Crea un objeto De derecha a izquierda delete Borra un objeto De derecha a izquierda () Conversión de tipo (type cast) De derecha a izquierda ->* .* Puntero a un miembro De izquierda a derecha * / % Operadores multiplicativos De izquierda a derecha + - Operadores aditivos De izquierda a derecha << >> Operadores bitwise De izquierda a derecha < > <= >= Operadores de relación De izquierda a derecha == != Operadores de igualdad De izquierda a derecha & Y bitwise De izquierda a derecha ^ bitwise O exclusivo De izquierda a derecha | bitwise O inclusivo De izquierda a derecha && Y lógico De izquierda a derecha || O lógico De izquierda a derecha ?: Operador condicional De derecha a izquierda = *= /= += -= >*gt;=&= ^= |= %= <<= Operadores de asignación De derecha a izquierda , Operador coma De derecha a izquierda En C++ las reglas de precedencia y asociatividad de operadores corresponden a las reglas matemáticas. Sin embargo, esto no funcionará, por ejemplo, con los operadores bitwise. Para tales operadores, se debe utilizar la tabla anterior, o bien paréntesis. La precedencia de un operador indica qué tan
cerca
se agrupan dos expresiones. Por ejemplo, en la expresión 1 + 5 * 3, la respuesta es 16 y no 18, ya que el operador de multiplicación (
*
) tiene una mayor precedencia que el operador de adición (
+
). Los paréntesis pueden ser usados para marcar la precedencia, si resulta necesario. Por ejemplo: (1 + 5) * 3 evalúa a 18. Si la precedencia de los operadores es la misma, se utiliza una asociación de izquierda a derecha. Asociatividad de Operadores Cuando una expresión contiene varios operadores, la prioridad de los operadores controla el orden de evaluación de las expresiones. Por ejemplo, la expresión x + y * z se evalúa como x + (y * z) porque el operador * tiene una prioridad más alta que el operador +. La tabla siguiente muestra todos los operadores en orden descendente de prioridad. Los operadores dentro de una misma fila tienen la misma prioridad y se evalúan en el orden, de izquierda a derecha, que aparecen en una expresión: CategoríaOperadoresPrincipalTodas las expresiones de no operadorExponenciación^Negación unaria+, -Multiplicativo*, /División de número enteroóduloModAditivo+, -Concatenación&Desplazamiento<<, >>Relacionales=, <>, <, >, <=, >=, Like, Is, TypeOf...IsNOT lógicoNotAND lógicoAnd, AndAlsoOR lógicoOr, OrElseXOR lógicoXor Cuando un operando se encuentra entre dos operadores de la misma prioridad, la asociatividad de los operadores controla el orden en que se ejecutan las operaciones. Todos los operadores binarios son asociativos por la izquierda, lo que significa que las operaciones se realizan de izquierda a derecha. La prioridad y asociatividad pueden controlarse mediante el uso de expresiones entre paréntesis. La asociatividad nos dice en que orden se aplican los operadores en expresiones complejas, por ejemplo: int a, b, c, d, e; b = c = d = e = 10; El operador de asignación
=
se asocia de derecha a izquierda, es decir, primero se aplica
e = 10
, después
d = e
, etc. O sea, a todas las variables se les asigna el mismo valor: 10. a = b * c + d * e; El operador * tiene mayor precedencia que + e =, por lo tanto se aplica antes, después se aplica el operador +, y por último el =. El resultado final será asignar a
a
el valor 200. int m[10] = {10,20,30,40,50,60,70,80,90,100}, *f; f = &m[5]; ++*f; cout << *f << endl; La salida de este ejemplo será, 61, los operadores unitarios tienen todos la misma precedencia, y se asocian de derecha a izquierda. Primero se aplica el *, y después el incremento al contenido de f. f = &m[5]; *f--; cout << *f << endl; La salida de este ejemplo será, 50. Primero se aplica el decremento al puntero, y después el *. a = b * (c + d) * e; Ahora el operador de mayor peso es (), ya que los paréntesis están en el grupo de mayor precedencia. Todo lo que hay entre los paréntesis se evalúa antes que cualquier otra cosa. Primero se evalúa la suma, y después las multiplicaciones. El resultado será asignar a la variable
a
el valor 2000. Este es el sistema para eludir las precedencias por defecto, si queremos evaluar antes una suma que un producto, debemos usar paréntesis. Jerarquía La jerarquía es el orden de los elementos de una serie según su valor. Puede aplicarse a personas, animales o cosas, en orden ascendente o descendente, según criterios de clase, poder, oficio, categoría, autoridad o cualquier otro asunto que conduzca a un sistema de clasificación. En una determinada sociedad, es el orden de los elementos existentes, ya sean políticos, sociales, económicos u otros. Precedencia La precedencia es una regla de orden que se asocia con los operadores para establecer cual se aplicará primero en caso de aparecer varios en una misma expresión (una especie de
orden de importancia
de los operadores).