<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = 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 => 'tr',
  ),
  'this' => 
  array (
    0 => 'language.operators.precedence.php',
    1 => 'İşle&ccedil; &Ouml;nceliği',
    2 => 'İşle&ccedil; &Ouml;nceliği',
  ),
  'up' => 
  array (
    0 => 'language.operators.php',
    1 => 'İşle&ccedil;ler',
  ),
  'prev' => 
  array (
    0 => 'language.operators.php',
    1 => 'İşle&ccedil;ler',
  ),
  'next' => 
  array (
    0 => 'language.operators.arithmetic.php',
    1 => 'Aritmetik',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'language/operators/precedence.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.operators.precedence" class="sect1">
 <h2 class="title">İşleç Önceliği</h2>
 
 <p class="para">
  İşleç önceliği iki ifadenin birbirine hangi sıkılıkta bağlı olduğunu
  belirtir. Örneğin, <code class="literal">1 + 5 * 3</code> ifadesinin sonucu 18 değil,
  16&#039;dır. Çünkü, çarpma (&quot;*&quot;) işlecinin önceliği toplama (&quot;+&quot;) işlecinden
  yüksektir. Önceliği arttırmak için gerekirse parantezler kullanılabilir.
  Örneğin, <code class="literal">(1 + 5) * 3</code> ifadesinin sonucu 18 olacaktır.
 </p>
 <p class="para">
  İşleçler eşit önceliğe sahip olduklarında aralarındaki ilişkiye işleçlerin
  gruplanışına göre karar verilir. Örneğin &quot;-&quot; isoldan ilişkilendirmelidir,
  dolayısıyla, <code class="literal">1 - 2 - 3</code> ifadesi
  <code class="literal">(1 - 2) - 3</code> olarak gruplanır ve <code class="literal">-4</code>
  olarak değerlendirlir. &quot;=&quot; ise sağdan ilişkilendirmelidir, dolayısıyla,
  <code class="literal">$a = $b = $c</code> ifadesi <code class="literal">$a = ($b = $c)</code>
  olarak gruplanır.  Özetle, soldan ilişkilendirme, ifadenin soldan sağa, sağdan
  ilişkilendirme ise sağdan sola değerlendirileceği anlamına gelir.
 </p>
 <p class="para">
  İlişkisel olmayan eş öncelikli işleçler birbirlerinin ardından
  kullanılamazlar, örneğin <code class="literal">1 &lt; 2 &gt; 1</code> ifadesi PHP için
  uygun değilken <code class="literal">1 &lt;= 1 == 1</code> ifadesi uygundur. Sebebi
  <code class="literal">==</code> işlecinin <code class="literal">&lt;=</code> işlecinden daha az
  öncelikli olmasıdır.
 </p>
 <p class="para">
  İlişkisellik sadece iki terimli (ve üç terimli) işleçler için anlamlıdır.
  Tek terimli işleçlerin önüne veya ardına ekleme yapıldığından bu fikir tek
  terimlilere uygulanabilir değildir. Örneğin, <code class="literal">!!$a</code>
  ifadesi sadece <code class="literal">!(!$a)</code> olarak gruplanabilir.
 </p>
 <p class="para">
  Parantez kullanımı gerekli olmasa bile çoğunlukla kodun okunabilirliğini
  arttırır. Örtük işleç önceliğine ve ilişkiselliğine güvenmektense kodu
  açıkça gruplamak daha iyidir.
 </p>
 <p class="para">
  Aşağıdaki listede işleçler en yüksek öncelikliden başlayıp en düşük
  öncelikliye doğru sıralanmışlardır. Aynı satırda yer alan işleçler
  eş öncelikli olup hangi sırada ele alınacaklarına değerlendirme sırasında
  karar verilir.
  <table class="doctable table">
   <caption><strong>İşleç Öncelikleri</strong></caption>
   
    <thead>
     <tr>
      <th>İlişkilendirme</th>
      <th>İşleçler</th>
      <th>Ek bilgi</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>(yok)</td>
      <td>
       <code class="literal">clone</code>
       <code class="literal">new</code>
     </td>
      <td><a href="language.oop5.cloning.php" class="link">clone</a> ve <a href="language.oop5.basic.php#language.oop5.basic.new" class="link">new</a></td>
     </tr>

     <tr>
      <td>(yok)</td>
      <td><code class="literal">**</code></td>
      <td>
       <a href="language.operators.arithmetic.php" class="link">aritmetik</a>
      </td>
     </tr>

     <tr>
      <td>sağdan</td>
      <td>
       <code class="literal">+</code>
       <code class="literal">-</code>
       <code class="literal">++</code>
       <code class="literal">--</code>
       <code class="literal">~</code>
       <code class="literal">(int)</code>
       <code class="literal">(float)</code>
       <code class="literal">(string)</code>
       <code class="literal">(array)</code>
       <code class="literal">(object)</code>
       <code class="literal">(bool)</code>
       <code class="literal">@</code>
      </td>
      <td>
       <a href="language.operators.arithmetic.php" class="link">aritmetik</a>
       (tek terimli <code class="literal">+</code> ve <code class="literal">-</code>),
       <a href="language.operators.increment.php" class="link">arttırım/eksiltim</a>,
       <a href="language.operators.bitwise.php" class="link">bitsel</a>,
       <a href="language.types.type-juggling.php#language.types.typecasting" class="link">tür
        çarpıtma</a> ve
       <a href="language.operators.errorcontrol.php" class="link">hata denetimi</a>
      </td>
     </tr>

     <tr>
      <td>soldan</td>
      <td><code class="literal">instanceof</code></td>
      <td>
       <a href="language.operators.type.php" class="link">Tür</a>
      </td>
     </tr>

     <tr>
      <td>(yok)</td>
      <td><code class="literal">!</code></td>
      <td>
       <a href="language.operators.logical.php" class="link">mantıksal</a>
      </td>
     </tr>

     <tr>
      <td>soldan</td>
      <td>
       <code class="literal">*</code>
       <code class="literal">/</code>
       <code class="literal">%</code>
      </td>
      <td>
       <a href="language.operators.arithmetic.php" class="link">aritmetik</a>
      </td>
     </tr>

     <tr>
      <td>soldan</td>
      <td>
       <code class="literal">+</code>
       <code class="literal">-</code>
       <code class="literal">.</code>
      </td>
      <td>
       <a href="language.operators.arithmetic.php" class="link">aritmetik</a>
       (iki terimli <code class="literal">+</code> ve <code class="literal">-</code>),
       <a href="language.operators.array.php" class="link">dizi</a> ve
       <a href="language.operators.string.php" class="link">dize</a> (PHP 8.0.0
       öncesinde <code class="literal">.</code>)
      </td>
     </tr>

     <tr>
      <td>soldan</td>
      <td>
       <code class="literal">&lt;&lt;</code>
       <code class="literal">&gt;&gt;</code>
      </td>
      <td>
       <a href="language.operators.bitwise.php" class="link">bitsel</a>
      </td>
     </tr>

     <tr>
      <td>soldan</td>
      <td><code class="literal">.</code></td>
      <td>
       <a href="language.operators.string.php" class="link">dize</a> (PHP 8.0.0
       öncesinde <code class="literal">.</code>)
      </td>
     </tr>

     <tr>
      <td>yönsüz</td>
      <td>
       <code class="literal">&lt;</code>
       <code class="literal">&lt;=</code>
       <code class="literal">&gt;</code>
       <code class="literal">&gt;=</code>
      </td>
      <td>
       <a href="language.operators.comparison.php" class="link">karşılaştırma</a>
      </td>
     </tr>

     <tr>
      <td>yönsüz</td>
      <td>
       <code class="literal">==</code>
       <code class="literal">!=</code>
       <code class="literal">===</code>
       <code class="literal">!==</code>
       <code class="literal">&lt;&gt;</code>
       <code class="literal">&lt;=&gt;</code>
      </td>
      <td>
       <a href="language.operators.comparison.php" class="link">karşılaştırma</a>
      </td>
     </tr>

     <tr>
      <td>left</td>
      <td><code class="literal">&amp;</code></td>
      <td>
       <a href="language.operators.bitwise.php" class="link">bitsel</a> ve
       <a href="language.references.php" class="link">gönderimler</a></td>
     </tr>

     <tr>
      <td>soldan</td>
      <td><code class="literal">^</code></td>
      <td>
       <a href="language.operators.bitwise.php" class="link">bitsel</a>
      </td>
     </tr>

     <tr>
      <td>soldan</td>
      <td><code class="literal">|</code></td>
      <td>
       <a href="language.operators.bitwise.php" class="link">bitsel</a>
      </td>
     </tr>

     <tr>
      <td>soldan</td>
      <td><code class="literal">&amp;&amp;</code></td>
      <td>
       <a href="language.operators.logical.php" class="link">mantıksal</a>
      </td>
     </tr>

     <tr>
      <td>soldan</td>
      <td><code class="literal">||</code></td>
      <td>
       <a href="language.operators.logical.php" class="link">mantıksal</a>
      </td>
     </tr>

     <tr>
      <td>right</td>
      <td><code class="literal">??</code></td>
      <td>
       <a href="language.operators.comparison.php#language.operators.comparison.coalesce" class="link">null birleşimi</a>
      </td>
     </tr>

     <tr>
      <td>yönsüz</td>
      <td><code class="literal">? :</code></td>
      <td>
       <a href="language.operators.comparison.php#language.operators.comparison.ternary" class="link">üç terimli
       </a> (PHP 8.0.0 öncesinde soldan)
      </td>
     </tr>

     <tr>
      <td>sağdan</td>
      <td>
       <code class="literal">=</code>
       <code class="literal">+=</code>
       <code class="literal">-=</code>
       <code class="literal">*=</code>
       <code class="literal">**=</code>
       <code class="literal">/=</code>
       <code class="literal">.=</code>
       <code class="literal">%=</code>
       <code class="literal">&amp;=</code>
       <code class="literal">|=</code>
       <code class="literal">^=</code>
       <code class="literal">&lt;&lt;=</code>
       <code class="literal">&gt;&gt;=</code>
       <code class="literal">??=</code>
      </td>
      <td>
       <a href="language.operators.assignment.php" class="link">atama</a>
      </td>
     </tr>

      <tr>
      <td>(yok)</td>
      <td><code class="literal">yield from</code></td>
      <td>
       <a href="language.generators.syntax.php#control-structures.yield.from" class="link">yield from</a>
      </td>
     </tr>

     <tr>
      <td>(yok)</td>
      <td><code class="literal">yield</code></td>
      <td>
       <a href="language.generators.syntax.php#control-structures.yield" class="link">yield</a>
      </td>
     </tr>

     <tr>
      <td>(yok)</td>
      <td><code class="literal">print</code></td>
      <td><span class="function"><a href="function.print.php" class="function">print</a></span></td>
     </tr>

     <tr>
      <td>soldan</td>
      <td><code class="literal">and</code></td>
      <td>
       <a href="language.operators.logical.php" class="link">mantıksal</a>
      </td>
     </tr>

     <tr>
      <td>soldan</td>
      <td><code class="literal">xor</code></td>
      <td>
       <a href="language.operators.logical.php" class="link">mantıksal</a>
      </td>
     </tr>

     <tr>
      <td>soldan</td>
      <td><code class="literal">or</code></td>
      <td>
       <a href="language.operators.logical.php" class="link">mantıksal</a>
      </td>
     </tr>

    </tbody>
   
  </table>

 </p>
 <p class="para">
  <div class="example" id="example-1">
   <p><strong>Örnek 1 - Öncelik yönü</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$a </span><span style="color: #007700">= </span><span style="color: #0000BB">3 </span><span style="color: #007700">* </span><span style="color: #0000BB">3 </span><span style="color: #007700">% </span><span style="color: #0000BB">5</span><span style="color: #007700">; </span><span style="color: #FF8000">// (3 * 3) % 5 = 4<br />// üç terimli işlecin değerlendirilmesi C/C++ dillerinden farklıdır<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">true </span><span style="color: #007700">? </span><span style="color: #0000BB">0 </span><span style="color: #007700">: </span><span style="color: #0000BB">true </span><span style="color: #007700">? </span><span style="color: #0000BB">1 </span><span style="color: #007700">: </span><span style="color: #0000BB">2</span><span style="color: #007700">; </span><span style="color: #FF8000">// (true ? 0 : true) ? 1 : 2 = 2 (PHP 8.0.0 öncesi)<br /><br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$b </span><span style="color: #007700">= </span><span style="color: #0000BB">2</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">$b </span><span style="color: #007700">+= </span><span style="color: #0000BB">3</span><span style="color: #007700">; </span><span style="color: #FF8000">// $a = ($b += 3) -&gt; $a = 5, $b = 5<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="para">
  İşleç önceliklerini ve işlem yönünü ifadeni gruplanışı belirler. PHP
  (genelde) ifadenin hangi sırayla değerlendirileceğini belirmez ve
  kodlamada özel bir değerlendirme sırası kabulünden kaçınılmalıdır.
  Çünkü davranış PHP&#039;nin sürümleri arasında farklı olabildiği gibi
  sarmalayan koda bağlı olarak da değişebilir.
  <div class="example" id="example-2">
   <p><strong>Örnek 2 - Tanımsız değerlendirme sırası</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$a </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br />echo </span><span style="color: #0000BB">$a </span><span style="color: #007700">+ </span><span style="color: #0000BB">$a</span><span style="color: #007700">++; </span><span style="color: #FF8000">// 2 veya 3 basabilir<br /><br /></span><span style="color: #0000BB">$i </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$array</span><span style="color: #007700">[</span><span style="color: #0000BB">$i</span><span style="color: #007700">] = </span><span style="color: #0000BB">$i</span><span style="color: #007700">++; </span><span style="color: #FF8000">// indis 1 veya 2 olabilir<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
  <div class="example" id="example-3">
   <p><strong>Örnek 3 <code class="literal">+</code>, <code class="literal">-</code> ve <code class="literal">.</code>
    aynı önceliğe sahiptir (PHP 8.0.0 öncesi)</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$x </span><span style="color: #007700">= </span><span style="color: #0000BB">4</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// bu satır beklenmedik bir çıktı ile sonuçlanabilir:<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"x eksi bir eşittir " </span><span style="color: #007700">. </span><span style="color: #0000BB">$x</span><span style="color: #007700">-</span><span style="color: #0000BB">1 </span><span style="color: #007700">. </span><span style="color: #DD0000">", ya da ben öyle umdum\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// çünkü aşağıdaki satır gibi değerlendirilir:<br /></span><span style="color: #007700">echo ((</span><span style="color: #DD0000">"x eksi bir eşittir " </span><span style="color: #007700">. </span><span style="color: #0000BB">$x</span><span style="color: #007700">) - </span><span style="color: #0000BB">1</span><span style="color: #007700">) . </span><span style="color: #DD0000">", ya da ben öyle umdum\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// istenen öncelik parantez kullanarak elde edilebilir:<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"x eksi bir eşittir " </span><span style="color: #007700">. (</span><span style="color: #0000BB">$x</span><span style="color: #007700">-</span><span style="color: #0000BB">1</span><span style="color: #007700">) . </span><span style="color: #DD0000">", ya da ben öyle umdum\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   <div class="example-contents"><p>
Yukarıdaki örneğin çıktısı:</p></div>
   <div class="example-contents screen">
<div class="cdata"><pre>
-1, ya da ben öyle umdum
-1, ya da ben öyle umdum
x eksi bir eşittir 3, ya da ben öyle umdum
</pre></div>
   </div>
  </div>
 </p>
 <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
  <p class="para">
   Eşitlik (<code class="literal">=</code>) işleci çoğu işleçten daha düşük önceliğe
   sahip olduğundan PHP halen şuna benzer ifadelere izin vermektedir:
   <code class="literal">foo()</code> işlevinin dönüş değerini <var class="varname">$a</var>
   değişkenine atayan <code class="literal">if (!$a = foo())</code> ifadesi.
  </p>
 </p></blockquote>
 <div class="sect2">
  <h3 class="title">Sürüm Bilgisi</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Sürüm: </th>
      <th>Açıklama</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.0.0</td>
      <td>
       Dizelerin ard arda eklenmesi (<code class="literal">.</code>) artık aritmetik
       toplama ve çıkarma (<code class="literal">+</code> ve <code class="literal">-</code>) ve
       bitsel sola/sağa kaydırma (<code class="literal">&lt;&lt;</code> ve
       <code class="literal">&gt;&gt;</code>) işleçlerinden daha düşük öncelikli oldu;
       evvelce <code class="literal">+</code> ve <code class="literal">-</code> ile aynı
       önceliğe, <code class="literal">&lt;&lt;</code> ve <code class="literal">&gt;&gt;</code>
       işleçlerinden daha yüksek önceliğe sahipti.
      </td>
     </tr>

     <tr>
      <td>8.0.0</td>
      <td>
       Üç terimli işleç (<code class="literal">? :</code>) artık ilişkisel değil;
       evvelce soldan ilişkili idi.
      </td>
     </tr>

     <tr>
      <td>7.4.0</td>
      <td>
       Dizelerin ard arda eklenmesinin (<code class="literal">.</code>)
       toplama ve çıkarma (<code class="literal">+</code> ve <code class="literal">-</code>) ve
       bitsel sola/sağa kaydırma (<code class="literal">&lt;&lt;</code> ve
       <code class="literal">&gt;&gt;</code>) işleçlerine göre önceliğine (yani
       parantezsiz birlikte kullanımlarına) güvenilmesi artık önerilmiyor.
      </td>
     </tr>

     <tr>
      <td>7.4.0</td>
      <td>
       Üç terimli işlecin (<code class="literal">? :</code>) soldan ilişkiselliğine
       güvenmek artık önerilmiyor; yani, çok sayıda parantezsiz üç terimli
       artık iç içe yazılmamalıdır.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>
</div><?php manual_footer($setup); ?>