Para construir declaraciones complejas, puede obtener más información ici
Es importante conocer el nivel de precedencia de los operadores. En ejemplo, los operadores booleanos (~, &, ^,|) tienen un nivel de precedencia mayor que los operadores relacionales (<, <=, >, >=, ==, !=), lo que tiene un impacto en la forma de construir las expresiones. Para obtener más información sobre la precedencia de los operadores, consulte la segunda tabla de este página
He copiado la tabla mencionada al final de mi post, va de menor a mayor precedencia(nótese que no es lo mismo precedencia en C++ ). Los operadores con la mayor precedencia se agrupan primero, por eso necesita paréntesis si quiere forzar la evaluación de ">" antes de "|".
Sin paréntesis, su analizador sintáctico está tratando de leer
Con(("Raster1" > (10 | "Raster2") < 20),30)
<, <=, >, >=, ==, != (menor que, menor que igual, mayor que, mayor que igual, igual a, no igual)
| (Or booleano)
^ (Booleano XOr)
& (Boolean And)
<<, >> (desplazamiento a la izquierda a nivel de bits, desplazamiento a la derecha a nivel de bits)
+, - (suma, resta)
*, /, //, % (Multiplicación, División, División de enteros, Módulo)
+, -, ~ (Unary Plus, Negate, Boolean Not)
** (Poder)