# Matematiksel (Aritmetik) Operatörler

## Toplama ( `+` )

İki ***değeri*** birbiriyle toplamak veya birleştirmek için kullanılan **`+`** sembolüdür. Bu operatör ile sayısal değerler toplanır. Eğer değerler arasında en az bir tane **`string`** var ise **`string`** olarak birleştirilir. Örnek.

{% code lineNumbers="true" %}

```javascript
alert(19 + 23); // sonuç number: 42
alert(19 + '23'); // sonuç string: '1923'
alert(19 + '23 TR'); // sonuç string: '1923 TR'
alert('19' + '23'); // sonuç string: '1923'
```

{% endcode %}

**`+`** operatörü değişkeni sayıya dönüştürmek için de kullanılır. Sayısal olamayacak verileri dönüştürüp **`NaN`** değeri üretir. Örnek.

{% code lineNumbers="true" %}

```javascript
let sayi1 = '2023';
let sayi2 = '1923';
let fark = +sayi1 + +sayi2; //2023 + 1923
alert(fark); // Number tipinde 3946 değeri.
alert( +('Bindokuzyüzyirmiüç') ); // Number tipinde NaN değeri.
```

{% endcode %}

## Çıkarma ( `-` )

İki ***değeri*** birbirinden çıkarmak için kullanılan **`-`** sembolüdür. Eğer öğeler sayısal olabilecek değer içeriyorsa dönüştürüp işlemi yapar. Eğer öğelerden en az biri sayısal olamayacak değer içeriyorsa **`NaN`** değeri üretir. Örnek.

{% code lineNumbers="true" %}

```javascript
alert(2023 - 1923); // sonuç number: 100
alert(19 - '23'); // sonuç number: -4
alert(19 - '23 TR'); // sonuç number: NaN
```

{% endcode %}

**`String`** tipini negatif olarak **`number`** tipine dönüştürmek için de **`-`** operatörü kullanılabilir. Örnek.

{% code lineNumbers="true" %}

```javascript
let sayi1 = '2023';
let sayi2 = '1923';
let fark = -sayi1 - -sayi2; // -2023 - (-1923)
alert(fark); // Number tipinde -100 değeri.
alert( -('Bindokuzyüzyirmiüç') ); // Number tipinde NaN değeri.
```

{% endcode %}

## Çarpma ( `*` )

İki ***değeri*** çarpmak için kullanılan **`*`** sembolüdür. Eğer öğeler sayısal olabilecek değer içeriyorsa dönüştürüp işlemi yapar. Eğer öğelerden en az biri sayısal olamayacak değer içeriyorsa **`NaN`** değeri üretir. Örnek.

{% code lineNumbers="true" %}

```javascript
alert(12 * 12); // sonuç number: 144
alert(12 * '12'); // sonuç number: 144
alert(12 * '12 TR'); // sonuç number: NaN
```

{% endcode %}

## Bölme ( `/` )

İki ***değeri*** bölmek için kullanılan **`/`** sembolüdür. Eğer öğeler sayısal olabilecek değer içeriyorsa dönüştürüp işlemi yapar. Eğer öğelerden en az biri sayısal olamayacak değer içeriyorsa **`NaN`** değeri üretir. Örnek.

{% code lineNumbers="true" %}

```javascript
alert(100 / 10); // sonuç number: 10
alert(100 / '10'); // sonuç number: 10
alert(100 / '10 TR'); // sonuç number: NaN
```

{% endcode %}

## Üs Alma ( `**` )

İlk ***değeri*** taban ikinci ***değeri*** üs olarak kullanan **`**`** sembolüdür. Eğer öğeler sayısal olabilecek değer içeriyorsa dönüştürüp işlemi yapar. Eğer öğelerden en az biri sayısal olamayacak değer içeriyorsa **`NaN`** değeri üretir. Örnek.

{% code lineNumbers="true" %}

```javascript
alert(10 ** 3); // sonuç number: 1000
alert(10 ** '3'); // sonuç number: 1000
alert(100 ** '3 TR'); // sonuç number: NaN
```

{% endcode %}

## Mod Alma (Kalan) ( `%` )

İlk ***değeri*** bölünen ikinci ***değeri*** bölen olarak kullanan **`%`** sembolüdür. Eğer öğeler sayısal olabilecek değer içeriyorsa dönüştürüp işlemi yapar. Eğer öğelerden en az biri sayısal olamayacak değer içeriyorsa **`NaN`** değeri üretir. Örnek.

{% code lineNumbers="true" %}

```javascript
alert(10 % 3); // sonuç number: 1
alert(10 % '3'); // sonuç number: 1
alert(10 % '3 TR'); // sonuç number: NaN
```

{% endcode %}

## Artırma ( `++` )

Sadece sayısal olabilecek ***değişkenleri*** bir artırmak için kullanılan **`++`** sembolüdür. Sadece değişken isimleriyle kullanılabilir doğrudan değer ile kullanılamaz. Önden artırım ve sonradan artırım olarak iki türü mevcuttur.&#x20;

Sonradan artırım kullanımında **okunduktan sonra artırım yapar** ve bir sonraki okumada değeri artmış olur. Örnek.

{% code lineNumbers="true" %}

```javascript
// Sonradan artırım
let sayi = 9;
alert(sayi++); // Önce sayi:9 çıktısı verdi ardından artırım yaptı.
alert(sayi); // Artık sayı 10 olarak çıktı verir.
```

{% endcode %}

Önden artırım kullanımında **okunmadan hemen önce artırım yapar** ve ilk okumada değeri artmış olur. Örnek.

{% code lineNumbers="true" %}

```javascript
// Önden artırım
let sayi = 9;
alert(++sayi); // Önce artırım yaptı sonra okuma yaptı 10 olarak çıktı verdi.
```

{% endcode %}

**`Number`** tipine dönüştürülebilecek diğer tipleri de dönüştürüp işlemi yapar. Örnek.

{% code lineNumbers="true" %}

```javascript
let sayi1 = '9'; // String
let sayi2 = '19'; // String
let toplam = ++sayi1 + sayi2++; // sayi1: 10, sayi2: 19 Sonuç:29
alert(toplam); // 29 çıktısı verir.
alert(sayi2); // Sonradan artırım sonraki okumada değer artırır: 20
```

{% endcode %}

## Azaltma ( `--` )

Sadece sayısal olabilecek ***değişkenleri*** bir azaltmak için kullanılan **`--`** sembolüdür. Sadece değişken isimleriyle kullanılabilir doğrudan değer ile kullanılamaz. Önden azaltma ve sonradan azaltma olarak iki türü mevcuttur.&#x20;

Sonradan azaltma kullanımında **okunduktan sonra azaltma yapar** ve bir sonraki okumada değeri azaltmış olur. Örnek.

{% code lineNumbers="true" %}

```javascript
// Sonradan azaltma
let sayi = 11;
alert(sayi--); // Önce sayi:11 çıktısı verdi ardından azaltma yaptı.
alert(sayi); // Artık sayı 10 olarak çıktı verir.
```

{% endcode %}

Önden azaltma kullanımında **okunmadan hemen önce azaltma yapar** ve ilk okumada değeri azalmış olur. Örnek.

{% code lineNumbers="true" %}

```javascript
// Önden azaltma
let sayi = 11;
alert(--sayi); // Önce azaltma yaptı sonra 10 olarak çıktı verdi.
```

{% endcode %}

**`Number`** tipine dönüştürülebilecek diğer tipleri de dönüştürüp işlemi yapar. Örnek.

{% code lineNumbers="true" %}

```javascript
let sayi1 = '11'; // String
let sayi2 = '21'; // String
let toplam = --sayi1 + sayi2--; // sayi1: 10, sayi2: 21 Sonuç:31
alert(toplam); // 31 çıktısı verir.
alert(sayi2); // Sonradan azaltma sonraki okumada değer azaltır: 20
```

{% endcode %}

{% hint style="info" %}
Javascript işlem önceliğine göre işlemleri yapar. Javascriptte matematiksel işlemler güvenlidir. Tip hatası olsa bile **`NaN`** değeri üretir.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hanuce.gitbook.io/javascript-egitimi/operatorler/matematiksel-aritmetik-operatorler.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
