aboutsummaryrefslogtreecommitdiffstats
path: root/doc/syntax/precedence.rdoc
diff options
context:
space:
mode:
Diffstat (limited to 'doc/syntax/precedence.rdoc')
-rw-r--r--doc/syntax/precedence.rdoc60
1 files changed, 60 insertions, 0 deletions
diff --git a/doc/syntax/precedence.rdoc b/doc/syntax/precedence.rdoc
new file mode 100644
index 0000000000..515626c74f
--- /dev/null
+++ b/doc/syntax/precedence.rdoc
@@ -0,0 +1,60 @@
+= Precedence
+
+From highest to lowest, this is the precedence table for ruby. High precedence
+operations happen before low precedence operations.
+
+ !, ~, unary +
+
+ **
+
+ unary -
+
+ *, /, %
+
+ +, -
+
+ <<, >>
+
+ &
+
+ |, ^
+
+ >, >=, <, <=
+
+ <=>, ==, ===, !=, =~, !~
+
+ &&
+
+ ||
+
+ .., ...
+
+ ?, :
+
+ modifier-rescue
+
+ =, +=, -=, etc.
+
+ defined?
+
+ not
+
+ or, and
+
+ modifier-if, modifier-unless, modifier-while, modifier-until
+
+ { } blocks
+
+Unary <code>+</code> and unary <code>-</code> are for <code>+1</code>,
+<code>-1</code> or <code>-(a + b)</code>.
+
+Modifier-if, modifier-unless, etc. are for the modifier versions of those
+keywords. For example, this is a modifier-unless expression:
+
+ a += 1 unless a.zero?
+
+<code>{ ... }</code> blocks have priority below all listed operations, but
+<code>do ... end</code> blocks have lower priority.
+
+All other words in the precedence table above are keywords.
+