Unter den Operatoren gibt es eine feste Rangordnung. Bei komplexen Rechenoperationen oder wenn mehrere Bedingungen miteinander verknüpft werden, gilt bei der Auflösung komplexen Ausdrücke die folgende Rangordnung:
Rang | Bindungsrichtung | Operatoren | |
---|---|---|---|
1 | Likns | -> | Deferenzieren |
2 | - | ++ -- | Inkrementieren, Dekrementieren |
3 | Rechts | ** | Potenzierung |
4 | Rechts | ! ~ + - | logische und bitweise Negation, Referenz, Vorzeichen |
5 | Likns | =~ !~ | Bindung an reguläre Ausdrücke |
6 | Likns | * / % x | Multiplikation, Division, Modulo, Zeichenwiederholung |
7 | Likns | + - . | Addition, Subtraktion, Zeichenkettenaddition |
8 | Likns | << >> | Verschieben von Bits |
9 | - | Monadische Operatoren | z.B. glob |
10 | - | < > <= >= lt gt le ge | Vergleiche grösser / kleiner |
11 | - | == != <=> eq ne cmp | Gleichheit / Ungleichheit |
12 | Likns | & | bitweises UND |
13 | Likns | | ^ | bitweises ODER |
14 | Likns | && | logisches UND |
15 | Likns | || | logisches ODER |
16 | - | .. ... | Bereichsdefinition in Listen |
17 | Rechts | ?: | Entweder-Oder-Bedingung |
18 | Rechts | = += -= *= und so weiter | Zuweisung |
19 | Likns | , => | Aneinanderreihung |
20 | - | Listenoperator | im Listenkontext |
21 | Rechts | not | logische Negation |
22 | Likns | and | logisches UND |
23 | Likns | or xor | logisches inklusuves / exklusives ODER |
Der Rang (precedence) der Operatoren legt fest, welche Operatoren in einem komplexen Ausdruck zuerst ausgewertet werden.
Die Bindungsrichtung bestimmt, wie Operatoren mit gleichem Rang ausgewertet werden (Links: Operatoren von links nach rechts, Rechts: von rechts nach links, und bei '-' ist die Reihenfolge der Auswertung entweder nicht wichtig, nicht garantiert oder nicht einmal möglich)