# GAMBAS BOOK 3.15.2

02.07.2018
k8:k8.5:start

## 8.5 Rank of operators

Most operators are available as binary operators. These require two operands to which they are applied. Unnary operators, on the other hand, only change one operand. A distinction is made between the individual operations according to priority and associativity if there are at least two operators in a statement.

• Priority describes the ranking order of operations for mathematical terms or expressions.
• The higher the priority (rank, ranking) of an operator, the more likely the corresponding operation will be executed.
• If there are at least two operators of equal rank, then associativity determines the ranking.
• Ranking and associativity of the operators determine the order in which operands are processed.
• “Links associativity applies to all binary operators, with the exception of the assignment operators. This means that the operators on the left side are processed before the operators on the right side.” [http://help.adobe.com/de_EN/AS2LCR/Flash_10.0/help. html? content=00000115. html]
• You can control the ranking order in operations to be performed when you use parentheses in mathematical terms or expressions.
OperatorPriority - Rank - Ranking
- sign, NOT maximal
IS 11
& 9
&/ 8
^ 7
* / DIV \ MOD % 6
+ - 5
OR AND AND XOR2

Table 8.5.1: Ranking of operators

Example:

```[1] Dim sElement As String
[2] Dim aMatrix As String[]
[3]
[4] ...
[5] aMatrix = Split(tts, " ")
[6] For Each sElement In aMatrix
[7]   ' If TypeOf(Val(sElement)) <= gb.Float = True Then
[8]     If [TypeOf(Val(sElement)) <= gb.Float] = True Then
[9]   ' If (IsNumber(Val(sElement)) = True) = True Then ' No error message
[10]    sText = sText & " " & sElement
[11]    ...
[12] Next ' sElement
[13] ...```

The code in line 7 triggered an error. The following error message came up, which at the same time pointed the right way:

`Unclear expression. Please insert square brackets in FMain.class:1234`

But also with round brackets the error message disappeared, as the adequate source code in line 9 showed.

Articles

## ﻿8.5 Rangfolge von Operatoren

Die meisten Operatoren liegen als binäre Operatoren vor. Diese benötigen zwei Operanden, auf die sie angewendet werden. Unnäre Operatoren dagegen verändern nur einen Operanden. Bei den einzelnen Operationen unterscheidet man nach Priorität und Assoziativität, wenn mindestens 2 Operatoren in einer Anweisung vorhanden sind.

• Priorität beschreibt die Rangfolge der Operation für mathematische Terme oder Ausdrücke.
• Je höher die Priorität (Rang, Rangfolge) eines Operators, um so eher wird die entsprechende Operation ausgeführt.
• Wenn mindestens zwei gleichrangige Operatoren vorhanden sind, dann bestimmt die Assoziativität die Rangfolge.
• Rangfolge und Assoziativität der Operatoren bestimmen die Reihenfolge, in der Operanden verarbeitet werden.
• “Für alle binären Operatoren, mit Ausnahme der Zuweisungsoperatoren, gilt die Linksassoziativität. Das heißt, dass die Operatoren auf der linken Seite vor den Operatoren auf der rechten Seite verarbeitet werden.” [http://help.adobe.com/de_DE/AS2LCR/Flash_10.0/help.html?content=00000115.html]
• Sie können die Rangfolge in der Operationen ausgeführt werden steuern, wenn Sie Klammern in den mathematischen Termen oder in den Ausdrücken verwenden.

Operator Priorität – Rang – Rangfolge
- (Vorzeichen) , NOT maximal
IS 11
& 9
&/ 8
^ 7
* / DIV \ MOD % 6
+ - 5
= <> >= <= > < LIKE BEGINS ENDS 4
OR AND XOR 2

Tabelle 8.5.1: Rangfolge von Operatoren

Beispiel:

```[1] Dim sElement As String
[2] Dim aMatrix As String[]
[3]
[4] ...
[5] aMatrix = Split(tts, " ")
[6] For Each sElement In aMatrix
[7]   ' If TypeOf(Val(sElement)) <= gb.Float = True Then
[8]     If [TypeOf(Val(sElement)) <= gb.Float] = True Then
[9]   ' If (IsNumber(Val(sElement)) = True) = True Then ' Ohne Fehlermeldung
[10]    sText = sText & " " & sElement
[11]    ...
[12] Next ' sElement
[13] ...```

Der Code in der Zeile 7 löste einen Fehler aus. Es kam folgende Fehlermeldung, die auch gleichzeitig den richtigen Weg wies:

`Unklarer Ausdruck. Bitte setzen Sie eckige Klammern in FMain.class:1234`

Aber auch mit runden Klammer verschwand die Fehlermeldung, wie der adäquate Quelltext in der Zeile 9 zeigte.