downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Our source is open

The syntax highlighted source is automatically generated by PHP from the plaintext script. If you're interested in what's behind the several functions we used, you can always take a look at the source of the following files:

Of course, if you want to see the source of this page, we have it available. You can also browse the SVN repository for this website on svn.php.net.

Source of: /manual/en/language.operators.precedence.php

<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$PARENTS = array();
include_once
dirname(__FILE__) ."/toc/language.operators.inc";
$setup = array (
 
'home' =>
  array (
   
0 => 'index.php',
   
1 => 'PHP Manual',
  ),
 
'head' =>
  array (
   
0 => 'UTF-8',
   
1 => 'en',
  ),
 
'this' =>
  array (
   
0 => 'language.operators.precedence.php',
   
1 => 'Operator Precedence',
  ),
 
'up' =>
  array (
   
0 => 'language.operators.php',
   
1 => 'Operators',
  ),
 
'prev' =>
  array (
   
0 => 'language.operators.php',
   
1 => 'Operators',
  ),
 
'next' =>
  array (
   
0 => 'language.operators.arithmetic.php',
   
1 => 'Arithmetic Operators',
  ),
);
$setup["toc"] = $TOC;
$setup["parents"] = $PARENTS;
manual_setup($setup);

manual_header();
?>
<div id="language.operators.precedence" class="sect1">
   <h2 class="title">Operator Precedence</h2>
   <p class="para">
    The precedence of an operator specifies how &quot;tightly&quot; it binds two
    expressions together. For example, in the expression <i>1 +
    5 * 3</i>, the answer is <i>16</i> and not
    <i>18</i> because the multiplication (&quot;*&quot;) operator
    has a higher precedence than the addition (&quot;+&quot;) operator.
    Parentheses may be used to force precedence, if necessary. For
    instance: <i>(1 + 5) * 3</i> evaluates to
    <i>18</i>. If operator precedence is equal, left to right
    associativity is used.
   </p>
   <p class="para">
    The following table lists the precedence of operators with the
    highest-precedence operators listed at the top of the table. Operators
    on the same line have equal precedence, in which case their
    associativity decides which order to evaluate them in.
    </p><table class="doctable table">
     <caption><b>Operator Precedence</b></caption>
    
      <thead valign="middle">
       <tr valign="middle">
        <th>Associativity</th>
        <th>Operators</th>
        <th>Additional Information</th>
       </tr>

      </thead>

      <tbody valign="middle" class="tbody">
       <tr valign="middle">
        <td align="left">non-associative</td>
        <td align="left">clone new</td>
        <td align="left"><a href="language.oop5.cloning.php" class="link">clone</a> and <a href="language.oop5.basic.php#language.oop5.basic.new" class="link">new</a></td>
       </tr>

       <tr valign="middle">
        <td align="left">left</td>
        <td align="left">[</td>
        <td align="left"><a href="function.array.php" class="function">array()</a></td>
       </tr>

       <tr valign="middle">
        <td align="left">non-associative</td>
        <td align="left">++ --</td>
        <td align="left">
         <a href="language.operators.increment.php" class="link">increment/decrement</a>
        </td>
       </tr>

       <tr valign="middle">
        <td align="left">right</td>
        <td align="left">~ - (int) (float) (string) (array) (object) (bool) @</td>
        <td align="left">
         <a href="language.types.php" class="link">types</a>
        </td>
       </tr>

       <tr valign="middle">
        <td align="left">non-associative</td>
        <td align="left">instanceof</td>
        <td align="left">
         <a href="language.types.php" class="link">types</a>
        </td>
       </tr>

       <tr valign="middle">
        <td align="left">right</td>
        <td align="left">!</td>
        <td align="left">
         <a href="language.operators.logical.php" class="link">logical</a>
        </td>
       </tr>

       <tr valign="middle">
        <td align="left">left</td>
        <td align="left">* / %</td>
        <td align="left">
         <a href="language.operators.arithmetic.php" class="link">arithmetic</a>
        </td>
       </tr>

       <tr valign="middle">
        <td align="left">left</td>
        <td align="left">+ - .</td>
        <td align="left">
         <a href="language.operators.arithmetic.php" class="link">arithmetic</a> and
         <a href="language.operators.string.php" class="link">string</a></td>
       </tr>

       <tr valign="middle">
        <td align="left">left</td>
        <td align="left">&lt;&lt; &gt;&gt;</td>
        <td align="left">
         <a href="language.operators.bitwise.php" class="link">bitwise</a>
        </td>
       </tr>

       <tr valign="middle">
        <td align="left">non-associative</td>
        <td align="left">&lt; &lt;= &gt; &gt;= &lt;&gt;</td>
        <td align="left">
         <a href="language.operators.comparison.php" class="link">comparison</a>
        </td>
       </tr>

       <tr valign="middle">
        <td align="left">non-associative</td>
        <td align="left">== != === !==</td>
        <td align="left">
         <a href="language.operators.comparison.php" class="link">comparison</a>
        </td>
       </tr>

       <tr valign="middle">
        <td align="left">left</td>
        <td align="left">&amp;</td>
        <td align="left">
         <a href="language.operators.bitwise.php" class="link">bitwise</a> and
         <a href="language.references.php" class="link">references</a></td>
       </tr>

       <tr valign="middle">
        <td align="left">left</td>
        <td align="left">^</td>
        <td align="left">
         <a href="language.operators.bitwise.php" class="link">bitwise</a>
        </td>
       </tr>

       <tr valign="middle">
        <td align="left">left</td>
        <td align="left">|</td>
        <td align="left">
         <a href="language.operators.bitwise.php" class="link">bitwise</a>
        </td>
       </tr>

       <tr valign="middle">
        <td align="left">left</td>
        <td align="left">&amp;&amp;</td>
        <td align="left">
         <a href="language.operators.logical.php" class="link">logical</a>
        </td>
       </tr>

       <tr valign="middle">
        <td align="left">left</td>
        <td align="left">||</td>
        <td align="left">
         <a href="language.operators.logical.php" class="link">logical</a>
        </td>
       </tr>

       <tr valign="middle">
        <td align="left">left</td>
        <td align="left">? :</td>
        <td align="left">
         <a href="language.operators.comparison.php#language.operators.comparison.ternary" class="link">ternary</a>
        </td>
       </tr>

       <tr valign="middle">
        <td align="left">right</td>
        <td align="left">
         = += -= *= /= .= %= &amp;= |= ^= &lt;&lt;= &gt;&gt;=
        </td>
        <td align="left">
         <a href="language.operators.assignment.php" class="link">assignment</a>
        </td>
       </tr>

       <tr valign="middle">
        <td align="left">left</td>
        <td align="left">and</td>
        <td align="left">
         <a href="language.operators.logical.php" class="link">logical</a>
        </td>
       </tr>

       <tr valign="middle">
        <td align="left">left</td>
        <td align="left">xor</td>
        <td align="left">
         <a href="language.operators.logical.php" class="link">logical</a>
        </td>
       </tr>

       <tr valign="middle">
        <td align="left">left</td>
        <td align="left">or</td>
        <td align="left">
         <a href="language.operators.logical.php" class="link">logical</a>
        </td>
       </tr>

       <tr valign="middle">
        <td align="left">left</td>
        <td align="left">,</td>
        <td align="left">many uses</td>
       </tr>

      </tbody>
    
    </table>
<p>
   </p>
   <p class="para">
    Left associativity means that the expression is evaluated from left to right,
    right associativity means the opposite.
    </p><div class="example">
     <p><b>Example #1 Associativity</b></p>
     <div class="example-contents programlisting">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$a&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">3&nbsp;</span><span style="color: #007700">*&nbsp;</span><span style="color: #0000BB">3&nbsp;</span><span style="color: #007700">%&nbsp;</span><span style="color: #0000BB">5</span><span style="color: #007700">;&nbsp;</span><span style="color: #FF8000">//&nbsp;(3&nbsp;*&nbsp;3)&nbsp;%&nbsp;5&nbsp;=&nbsp;4<br /></span><span style="color: #0000BB">$a&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">true&nbsp;</span><span style="color: #007700">?&nbsp;</span><span style="color: #0000BB">0&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">true&nbsp;</span><span style="color: #007700">?&nbsp;</span><span style="color: #0000BB">1&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">;&nbsp;</span><span style="color: #FF8000">//&nbsp;(true&nbsp;?&nbsp;0&nbsp;:&nbsp;true)&nbsp;?&nbsp;1&nbsp;:&nbsp;2&nbsp;=&nbsp;2<br /><br /></span><span style="color: #0000BB">$a&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$b&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$a&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$b&nbsp;</span><span style="color: #007700">+=&nbsp;</span><span style="color: #0000BB">3</span><span style="color: #007700">;&nbsp;</span><span style="color: #FF8000">//&nbsp;$a&nbsp;=&nbsp;($b&nbsp;+=&nbsp;3)&nbsp;-&gt;&nbsp;$a&nbsp;=&nbsp;5,&nbsp;$b&nbsp;=&nbsp;5<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
     </div>

    </div><p>
    Use parentheses to increase readability of the code.
   </p>
   <blockquote><p><b class="note">Note</b>:
   
     Although <i>=</i> has a lower precedence than
     most other operators, PHP will still allow expressions
     similar to the following: <i>if (!$a = foo())</i>,
     in which case the return value of <i>foo()</i> is
     put into <var class="varname">$a</var>.
    <br />
   </p></blockquote>
  </div><?php manual_footer(); ?>
 
show source | credits | sitemap | contact | advertising | mirror sites