File: Operator-Precedence.html

package info (click to toggle)
octave 7.3.0-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 130,464 kB
  • sloc: cpp: 332,823; ansic: 71,320; fortran: 20,963; objc: 8,562; sh: 8,115; yacc: 4,882; lex: 4,438; perl: 1,554; java: 1,366; awk: 1,257; makefile: 652; xml: 173
file content (153 lines) | stat: -rw-r--r-- 7,005 bytes parent folder | download
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
141
142
143
144
145
146
147
148
149
150
151
152
153
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Operator Precedence (GNU Octave (version 7.3.0))</title>

<meta name="description" content="Operator Precedence (GNU Octave (version 7.3.0))">
<meta name="keywords" content="Operator Precedence (GNU Octave (version 7.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-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
span:hover a.copiable-anchor {visibility: visible}
ul.no-bullet {list-style: none}
-->
</style>
<link rel="stylesheet" type="text/css" href="octave.css">


</head>

<body lang="en">
<div class="section" id="Operator-Precedence">
<div class="header">
<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> &nbsp; [<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>
<span id="Operator-Precedence-1"></span><h3 class="section">8.8 Operator Precedence</h3>
<span id="index-operator-precedence"></span>

<p><em>Operator precedence</em> determines how operators are grouped, when
different operators appear close by in one expression.  For example,
&lsquo;<samp>*</samp>&rsquo; has higher precedence than &lsquo;<samp>+</samp>&rsquo;.  Thus, the expression
<code>a + b * c</code> means to multiply <code>b</code> and <code>c</code>, and then add
<code>a</code> to the product (i.e., <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>a - b + c</code> groups as
<code>(a - b) + c</code>, but the expression <code>a = b = c</code> groups as
<code>a = (b = c)</code>.
</p>
<p>The precedence of prefix unary operators is important when another
operator follows the operand.  For example, <code>-x^2</code> means
<code>-(x^2)</code>, because &lsquo;<samp>-</samp>&rsquo; has lower precedence than &lsquo;<samp>^</samp>&rsquo;.
</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 compact="compact">
<dt><span><code>function call and array indexing, cell array indexing, and structure element indexing</code></span></dt>
<dd><p>&lsquo;<samp>()</samp>&rsquo;  &lsquo;<samp>{}</samp>&rsquo; &lsquo;<samp>.</samp>&rsquo;
</p>
</dd>
<dt><span><code>postfix increment, and postfix decrement</code></span></dt>
<dd><p>&lsquo;<samp>++</samp>&rsquo;  &lsquo;<samp>--</samp>&rsquo;
</p>
<p>These operators group right to left.
</p>
</dd>
<dt><span><code>transpose and exponentiation</code></span></dt>
<dd><p>&lsquo;<samp>'</samp>&rsquo; &lsquo;<samp>.'</samp>&rsquo; &lsquo;<samp>^</samp>&rsquo; &lsquo;<samp>.^</samp>&rsquo;
</p>
</dd>
<dt><span><code>unary plus, unary minus, prefix increment, prefix decrement, and logical &quot;not&quot;</code></span></dt>
<dd><p>&lsquo;<samp>+</samp>&rsquo; &lsquo;<samp>-</samp>&rsquo; &lsquo;<samp>++</samp>&rsquo;  &lsquo;<samp>--</samp>&rsquo; &lsquo;<samp>~</samp>&rsquo; &lsquo;<samp>!</samp>&rsquo;
</p>
</dd>
<dt><span><code>multiply and divide</code></span></dt>
<dd><p>&lsquo;<samp>*</samp>&rsquo; &lsquo;<samp>/</samp>&rsquo; &lsquo;<samp>\</samp>&rsquo; &lsquo;<samp>.\</samp>&rsquo; &lsquo;<samp>.*</samp>&rsquo; &lsquo;<samp>./</samp>&rsquo;
</p>
</dd>
<dt><span><code>add, subtract</code></span></dt>
<dd><p>&lsquo;<samp>+</samp>&rsquo; &lsquo;<samp>-</samp>&rsquo;
</p>
</dd>
<dt><span><code>colon</code></span></dt>
<dd><p>&lsquo;<samp>:</samp>&rsquo;
</p>
</dd>
<dt><span><code>relational</code></span></dt>
<dd><p>&lsquo;<samp>&lt;</samp>&rsquo; &lsquo;<samp>&lt;=</samp>&rsquo; &lsquo;<samp>==</samp>&rsquo; &lsquo;<samp>&gt;=</samp>&rsquo; &lsquo;<samp>&gt;</samp>&rsquo; &lsquo;<samp>!=</samp>&rsquo; &lsquo;<samp>~=</samp>&rsquo;
</p>
</dd>
<dt><span><code>element-wise &quot;and&quot;</code></span></dt>
<dd><p>&lsquo;<samp>&amp;</samp>&rsquo;
</p>
</dd>
<dt><span><code>element-wise &quot;or&quot;</code></span></dt>
<dd><p>&lsquo;<samp>|</samp>&rsquo;
</p>
</dd>
<dt><span><code>logical &quot;and&quot;</code></span></dt>
<dd><p>&lsquo;<samp>&amp;&amp;</samp>&rsquo;
</p>
</dd>
<dt><span><code>logical &quot;or&quot;</code></span></dt>
<dd><p>&lsquo;<samp>||</samp>&rsquo;
</p>
</dd>
<dt><span><code>assignment</code></span></dt>
<dd><p>&lsquo;<samp>=</samp>&rsquo; &lsquo;<samp>+=</samp>&rsquo; &lsquo;<samp>-=</samp>&rsquo; &lsquo;<samp>*=</samp>&rsquo; &lsquo;<samp>/=</samp>&rsquo; &lsquo;<samp>\=</samp>&rsquo;
&lsquo;<samp>^=</samp>&rsquo; &lsquo;<samp>.*=</samp>&rsquo; &lsquo;<samp>./=</samp>&rsquo; &lsquo;<samp>.\=</samp>&rsquo; &lsquo;<samp>.^=</samp>&rsquo; &lsquo;<samp>|=</samp>&rsquo;
&lsquo;<samp>&amp;=</samp>&rsquo;
</p>
<p>These operators group right to left.
</p></dd>
</dl>


</div>
<hr>
<div class="header">
<p>
Previous: <a href="Increment-Ops.html">Increment Operators</a>, Up: <a href="Expressions.html">Expressions</a> &nbsp; [<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>