From d09085d72f282083703fdf3e37388d21194dbe63 Mon Sep 17 00:00:00 2001 From: Jean Flach Date: Fri, 24 Aug 2018 14:50:16 +0200 Subject: [PATCH] Fix operator precedence table Fixes #5573 --- doc/17-language-reference.md | 64 ++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/doc/17-language-reference.md b/doc/17-language-reference.md index 380a9a5a2..039e3ad31 100644 --- a/doc/17-language-reference.md +++ b/doc/17-language-reference.md @@ -160,38 +160,38 @@ The following operators are supported in expressions. The operators are sorted b Operator | Precedence | Examples (Result) | Description ---------|------------|-----------------------------------------------|-------------------------------- -() | 1 | (3 + 3) * 5 | Groups sub-expressions -() | 1 | Math.random() | Calls a function -[] | 1 | a[3] | Array subscript -. | 1 | a.b | Element access -! | 2 | !"Hello" (false), !false (true) | Logical negation of the operand -~ | 2 | ~true (false) | Bitwise negation of the operand -+ | 2 | +3 | Unary plus -- | 2 | -3 | Unary minus -& | 2 | &var (reference to 'var') | Reference operator -* | 2 | *var | Indirection operator -* | 3 | 5m * 10 (3000) | Multiplies two numbers -/ | 3 | 5m / 5 (60) | Divides two numbers -% | 3 | 17 % 12 (5) | Remainder after division -+ | 4 | 1 + 3 (4), "hello " + "world" ("hello world") | Adds two numbers; concatenates strings -- | 4 | 3 - 1 (2) | Subtracts two numbers -<< | 5 | 4 << 8 (1024) | Left shift ->> | 5 | 1024 >> 4 (64) | Right shift -< | 6 | 3 < 5 (true) | Less than -> | 6 | 3 > 5 (false) | Greater than -<= | 6 | 3 <= 3 (true) | Less than or equal ->= | 6 | 3 >= 3 (true) | Greater than or equal -in | 7 | "foo" in [ "foo", "bar" ] (true) | Element contained in array -!in | 7 | "foo" !in [ "bar", "baz" ] (true) | Element not contained in array -== | 8 | "hello" == "hello" (true), 3 == 5 (false) | Equal to -!= | 8 | "hello" != "world" (true), 3 != 3 (false) | Not equal to -& | 9 | 7 & 3 (3) | Binary AND -^ | 10 | 17 ^ 12 (29) | Bitwise XOR -| | 11 | 2 | 3 (3) | Binary OR -&& | 13 | true && false (false), 3 && 7 (7), 0 && 7 (0) | Logical AND -|| | 14 | true || false (true), 0 || 7 (7)| Logical OR -= | 12 | a = 3 | Assignment -=> | 15 | x => x * x (function with arg x) | Lambda, for loop +`()` | 1 | (3 + 3) * 5 | Groups sub-expressions +`()` | 1 | Math.random() | Calls a function +`[]` | 1 | a[3] | Array subscript +`.` | 1 | a.b | Element access +`!` | 2 | !"Hello" (false), !false (true) | Logical negation of the operand +`~` | 2 | ~true (false) | Bitwise negation of the operand +`+` | 2 | +3 | Unary plus +`-` | 2 | -3 | Unary minus +`&` | 2 | &var (reference to 'var') | Reference operator +`*` | 2 | *var | Indirection operator +`*` | 3 | 5m * 10 (3000) | Multiplies two numbers +`/` | 3 | 5m / 5 (60) | Divides two numbers +`%` | 3 | 17 % 12 (5) | Remainder after division +`+` | 4 | 1 + 3 (4), "hello " + "world" ("hello world") | Adds two numbers; concatenates strings +`-` | 4 | 3 - 1 (2) | Subtracts two numbers +`<<` | 5 | 4 << 8 (1024) | Left shift +`>>` | 5 | 1024 >> 4 (64) | Right shift +`<` | 6 | 3 < 5 (true) | Less than +`>` | 6 | 3 > 5 (false) | Greater than +`<=` | 6 | 3 <= 3 (true) | Less than or equal +`>=` | 6 | 3 >= 3 (true) | Greater than or equal +`in` | 7 | "foo" in [ "foo", "bar" ] (true) | Element contained in array +`!in` | 7 | "foo" !in [ "bar", "baz" ] (true) | Element not contained in array +`==` | 8 | "hello" == "hello" (true), 3 == 5 (false) | Equal to +`!=` | 8 | "hello" != "world" (true), 3 != 3 (false) | Not equal to +`&` | 9 | 7 & 3 (3) | Binary AND +`^` | 10 | 17 ^ 12 (29) | Bitwise XOR +| | 11 | 2 | 3 (3) | Binary OR +|| | 12 | true || false (true), 0 || 7 (7)| Logical OR +`&&` | 13 | true && false (false), 3 && 7 (7), 0 && 7 (0) | Logical AND +`=` | 14 | a = 3 | Assignment +`=>` | 15 | x => x * x (function with arg x) | Lambda, for loop ### References