1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
<!DOCTYPE html>
<html>
<!-- Created by GNU Texinfo 7.1.1, https://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Operator Precedence (GNU Octave (version 10.3.0))</title>
<meta name="description" content="Operator Precedence (GNU Octave (version 10.3.0))">
<meta name="keywords" content="Operator Precedence (GNU Octave (version 10.3.0))">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link href="index.html" rel="start" title="Top">
<link href="Concept-Index.html" rel="index" title="Concept Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Expressions.html" rel="up" title="Expressions">
<link href="Increment-Ops.html" rel="prev" title="Increment Ops">
<style type="text/css">
<!--
a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
span:hover a.copiable-link {visibility: visible}
-->
</style>
<link rel="stylesheet" type="text/css" href="octave.css">
</head>
<body lang="en">
<div class="section-level-extent" id="Operator-Precedence">
<div class="nav-panel">
<p>
Previous: <a href="Increment-Ops.html" accesskey="p" rel="prev">Increment Operators</a>, Up: <a href="Expressions.html" accesskey="u" rel="up">Expressions</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<h3 class="section" id="Operator-Precedence-1"><span>8.8 Operator Precedence<a class="copiable-link" href="#Operator-Precedence-1"> ¶</a></span></h3>
<a class="index-entry-id" id="index-operator-precedence"></a>
<p><em class="dfn">Operator precedence</em> determines how operators are grouped, when
different operators appear close by in one expression. For example,
‘<samp class="samp">*</samp>’ has higher precedence than ‘<samp class="samp">+</samp>’. Thus, the expression
<code class="code">a + b * c</code> means to multiply <code class="code">b</code> and <code class="code">c</code>, and then add
<code class="code">a</code> to the product (i.e., <code class="code">a + (b * c)</code>).
</p>
<p>You can overrule the precedence of the operators by using parentheses.
You can think of the precedence rules as saying where the parentheses
are assumed if you do not write parentheses yourself. In fact, it is
wise to use parentheses whenever you have an unusual combination of
operators, because other people who read the program may not remember
what the precedence is in this case. You might forget as well, and then
you too could make a mistake. Explicit parentheses will help prevent
any such mistake.
</p>
<p>When operators of equal precedence are used together, the leftmost
operator groups first, except for the assignment operators, which group
in the opposite order. Thus, the expression <code class="code">a - b + c</code> groups as
<code class="code">(a - b) + c</code>, but the expression <code class="code">a = b = c</code> groups as
<code class="code">a = (b = c)</code>.
</p>
<p>The precedence of prefix unary operators is important when another
operator follows the operand. For example, <code class="code">-x^2</code> means
<code class="code">-(x^2)</code>, because ‘<samp class="samp">-</samp>’ has lower precedence than ‘<samp class="samp">^</samp>’.
</p>
<p>Here is a table of the operators in Octave, in order of decreasing
precedence. Unless noted, all operators group left to right.
</p>
<dl class="table">
<dt><code class="code">function call and array indexing, cell array indexing, and structure element indexing</code></dt>
<dd><p>‘<samp class="samp">()</samp>’ ‘<samp class="samp">{}</samp>’ ‘<samp class="samp">.</samp>’
</p>
</dd>
<dt><code class="code">postfix increment, and postfix decrement</code></dt>
<dd><p>‘<samp class="samp">++</samp>’ ‘<samp class="samp">--</samp>’
</p>
<p>These operators group right to left.
</p>
</dd>
<dt><code class="code">transpose and exponentiation</code></dt>
<dd><p>‘<samp class="samp">'</samp>’ ‘<samp class="samp">.'</samp>’ ‘<samp class="samp">^</samp>’ ‘<samp class="samp">.^</samp>’
</p>
</dd>
<dt><code class="code">unary plus, unary minus, prefix increment, prefix decrement, and logical "not"</code></dt>
<dd><p>‘<samp class="samp">+</samp>’ ‘<samp class="samp">-</samp>’ ‘<samp class="samp">++</samp>’ ‘<samp class="samp">--</samp>’ ‘<samp class="samp">~</samp>’ ‘<samp class="samp">!</samp>’
</p>
</dd>
<dt><code class="code">multiply and divide</code></dt>
<dd><p>‘<samp class="samp">*</samp>’ ‘<samp class="samp">/</samp>’ ‘<samp class="samp">\</samp>’ ‘<samp class="samp">.\</samp>’ ‘<samp class="samp">.*</samp>’ ‘<samp class="samp">./</samp>’
</p>
</dd>
<dt><code class="code">add, subtract</code></dt>
<dd><p>‘<samp class="samp">+</samp>’ ‘<samp class="samp">-</samp>’
</p>
</dd>
<dt><code class="code">colon</code></dt>
<dd><p>‘<samp class="samp">:</samp>’
</p>
</dd>
<dt><code class="code">relational</code></dt>
<dd><p>‘<samp class="samp"><</samp>’ ‘<samp class="samp"><=</samp>’ ‘<samp class="samp">==</samp>’ ‘<samp class="samp">>=</samp>’ ‘<samp class="samp">></samp>’ ‘<samp class="samp">!=</samp>’ ‘<samp class="samp">~=</samp>’
</p>
</dd>
<dt><code class="code">element-wise "and"</code></dt>
<dd><p>‘<samp class="samp">&</samp>’
</p>
</dd>
<dt><code class="code">element-wise "or"</code></dt>
<dd><p>‘<samp class="samp">|</samp>’
</p>
</dd>
<dt><code class="code">logical "and"</code></dt>
<dd><p>‘<samp class="samp">&&</samp>’
</p>
</dd>
<dt><code class="code">logical "or"</code></dt>
<dd><p>‘<samp class="samp">||</samp>’
</p>
</dd>
<dt><code class="code">assignment</code></dt>
<dd><p>‘<samp class="samp">=</samp>’ ‘<samp class="samp">+=</samp>’ ‘<samp class="samp">-=</samp>’ ‘<samp class="samp">*=</samp>’ ‘<samp class="samp">/=</samp>’ ‘<samp class="samp">\=</samp>’
‘<samp class="samp">^=</samp>’ ‘<samp class="samp">.*=</samp>’ ‘<samp class="samp">./=</samp>’ ‘<samp class="samp">.\=</samp>’ ‘<samp class="samp">.^=</samp>’ ‘<samp class="samp">|=</samp>’
‘<samp class="samp">&=</samp>’
</p>
<p>These operators group right to left.
</p></dd>
</dl>
</div>
<hr>
<div class="nav-panel">
<p>
Previous: <a href="Increment-Ops.html">Increment Operators</a>, Up: <a href="Expressions.html">Expressions</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>
|