0Pricing
Coding Interview Prep · Ders

AND/OR Önceliği ve Parantez Kullanımı

Mülakatçıların sorularına yerleştirdiği en yaygın filtreleme hatasını öğrenin.

AND/OR Önceliği ve Parantez Kullanımı, CoddyKit'te ücretsiz bir Coding Interview Prep dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Coding Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Coding Interview Prep kursu toplamda 4 dersten oluşur.

Mülakat Yapanların Kurduğu Tuzak

Mülakatlarda en sık yapılan filtreleme hatası, ilk bakışta doğru görünür. Sizden 5 numaralı müşterinin beklemede veya gönderilmiş durumundaki siparişlerini bulmanız istenir. Aday, WHERE içinde AND ile OR'u karıştırır ve fazladan satırlar döner.

Neden? Çünkü AND, OR'dan daha sıkı bağlanır. Veritabanı önce tüm AND çiftlerini, ardından OR işlemlerini değerlendirir. Bu ders, bu kuralı refleks hâline getirerek bu nedenle puan kaybetmenizi önler.

İşleç Önceliği Tek Cümlede

Her SQL lehçesinde mantıksal işleçler şu sırayla bağlanır: önce NOT, sonra AND, en son OR.

  • NOT en yüksek önceliğe sahiptir
  • AND orta önceliğe sahiptir
  • OR en düşük önceliğe sahiptir

Bu nedenle A OR B AND C, hiçbir zaman (A OR B) AND C olarak değil, A OR (B AND C) olarak okunur. Mülakat yapan kişi bunu unutmanıza güveniyor.

Hatalı Sorgu

Adayın 5 numaralı müşteri, beklemede veya gönderilmiş durum isteği için yazdığı sorgu şöyledir. Doğru görünüyor, ancak yanlıştır.

AND daha sıkı bağlandığı için SQL bunu (customer_id = 5 AND status = 'pending') OR status = 'shipped' olarak okur. İkinci dalda hiç müşteri filtresi yoktur; bu nedenle tüm müşterilerin gönderilmiş siparişlerini döndürür.

SELECT *
FROM orders
WHERE customer_id = 5
  AND status = 'pending'
  OR status = 'shipped';

Çözüm: Parantezler

Müşteri filtresinin her iki duruma da uygulanması için OR dalını parantez içine alın. Parantezler önceliği geçersiz kılar ve amacı açıkça gösterir.

Artık SQL önce gruplandırılmış OR ifadesini değerlendirir, ardından customer_id = 5 koşulunu grubun tamamına uygular. Kıdemli incelemeciler, öncelik zaten doğru sonucu verse bile yalnızca okunabilirlik için parantez ekler.

SELECT *
FROM orders
WHERE customer_id = 5
  AND (status = 'pending' OR status = 'shipped');

Doğruluk Tablosunu Adım Adım İzleme

9 numaralı müşteriye ait gönderilmiş bir siparişi ele alın. Hatalı sürümü adım adım izleyin:

  • customer_id = 5 yanlıştır
  • status = 'pending' yanlıştır
  • false AND false yanlıştır
  • false OR (status = 'shipped' is true) doğrudur

Satır, 5 numaralı müşteriye ait olmadığı hâlde döndürülür. Somut bir satırı sesli olarak adım adım izlemek, mülakat yapanların tam olarak görmek istediği şeydir.

NOT En Sıkı Bağlanır

NOT yalnızca kendisinden hemen sonra gelen koşula uygulanır. Bu nedenle NOT status = 'open' AND priority = 'high', (NOT status = 'open') AND priority = 'high' anlamına gelir.

Tüm ifadeyi olumsuzlamak istiyorsanız parantez kullanmalısınız: NOT (status = 'open' AND priority = 'high'). De Morgan yasasına göre bu ifade status <> 'open' OR priority <> 'high' ile eşdeğerdir.

SELECT *
FROM tickets
WHERE NOT (status = 'open' AND priority = 'high');

Üç Koşullu Bir Örnek

Elektronik ürünler veya ev aletleri olan ve stokta bulunan ürünleri bulun. Parantezler olmadan stok filtresi yalnızca ev aletlerine uygulanır.

Aşağıdaki gruplandırılmış sorgu açıkça okunur: iki kategoriden birini seçin, ardından stokta olmasını zorunlu kılın. Zihinsel kural şudur: Bir sorgu AND ile OR'u karıştırdığında, OR grubunun çevresinde neredeyse her zaman parantez gerekir.

SELECT *
FROM products
WHERE (category = 'electronics' OR category = 'appliances')
  AND in_stock = true;

IN ile Daha Temiz Bir Alternatif

Aynı sütunda uzun bir OR zinciri hem hataya açıktır hem de gereksiz yere uzundur. Bunun yerine açıkça anlaşılır olan ve parantez gerektirmeyen IN kullanın.

Aşağıdaki sorgu bir öncekiyle tamamen eşdeğerdir, ancak bozulması daha zordur. Görüşmeciler bu yeniden düzenlemeyi görmekten hoşlanır; çünkü hem doğruluğu hem de okunabilirliği anladığınızı gösterir.

SELECT *
FROM products
WHERE category IN ('electronics', 'appliances')
  AND in_stock = true;

Hesaplanan Filtrelerde Öncelik

Aritmetik ile mantık bir araya geldiğinde de öncelik kuralları geçerlidir. price * 1.2 > 100 OR discount = 0 AND active = true ifadesinde karşılaştırma ve aritmetik önce çözümlenir, ardından AND, sonra da OR gelir.

Yani ifade (price * 1.2 > 100) OR ((discount = 0) AND (active = true)) şeklinde okunur. Şüpheye düştüğünüzde, baskı altında tabloyu ezberlemeye çalışmayın; bunun yerine her grubu paranteze alın.

Canlı Mülakatta Nasıl Yanıt Verilir

Görüşmeci size karışık bir AND/OR filtresi gösterip bu ne döndürür diye sorduğunda üç şey yapın:

  • Öncelik kuralını belirtin: AND, OR'dan önce gelir
  • Gerçek gruplamasını ortaya çıkarmak için sorgunun parantezlerini sesli olarak yeniden düzenleyin
  • Hatayı ortaya çıkaran bir satırı takip edin

Ardından düzeltilmiş, parantez içine alınmış sürümü sunun. Bu sıra, kıdemli düzeyde titizlik sergilediğinizi gösterir.

Koruyucu Alışkanlık

Profesyonel alışkanlık şudur: her OR grubunu her zaman paranteze alın. Bunun maliyeti iki karakterdir ve koca bir hata ile kod incelemesi yorumu sınıfını ortadan kaldırır.

Kod incelemesi yapanlar, bir filtrenin doğru olduğunu doğrulamak için önceliği zihnen değerlendirmek zorunda kalmamalıdır. Gruplamayı görünür kılın. Bu, gereksiz sözdiziminin herkes tarafından iyi bir üslup kabul edildiği nadir durumlardan biridir.

SELECT order_id, status
FROM orders
WHERE customer_id = 5
  AND (status = 'pending' OR status = 'shipped');

Hızlı Kontrol

Yanıtlamadan önce öncelik kuralı üzerine düşünün.

Özet

Önemli çıkarımlar:

  • Mantıksal öncelik sırası NOT, ardından AND, ardından OR
  • Karışık AND/OR filtrelerde, OR grubunun çevresinde neredeyse her zaman parantez gerekir
  • Eksik bir parantez sonuçları sessizce genişletir ve çoğu zaman bir filtreyi tamamen devre dışı bırakır
  • Tek bir sütundaki uzun OR zincirlerini IN ile değiştirin
  • Canlı yanıt vermek için: kuralı belirtin, parantezleri yeniden düzenleyin, bir satırı takip edin ve ardından düzeltin

Öncelik aynı sonucu verse bile OR gruplarını her zaman paranteze alın.

Sıkça Sorulan Sorular

“AND/OR Önceliği ve Parantez Kullanımı” dersi ücretsiz mi?

Evet — “AND/OR Önceliği ve Parantez Kullanımı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Coding Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Coding Interview Prep kursu toplamda 4 dersten oluşur.

“AND/OR Önceliği ve Parantez Kullanımı” dersinde ne öğreneceğim?

Mülakatçıların sorularına yerleştirdiği en yaygın filtreleme hatasını öğrenin. Coding Interview Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Coding Interview Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Coding Interview Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“AND/OR Önceliği ve Parantez Kullanımı” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Coding Interview Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Coding Interview Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. AND/OR Önceliği ve Parantez Kullanımı
  2. BETWEEN, IN ve Dahil Sınırlar
  3. LIKE, Joker Karakterler ve Kaçış
  4. Hesaplanan Değerlere Göre Filtreleme
← Coding Interview Prep Sayfasına Dön