You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/07-operators/article.md
+58-58Lines changed: 58 additions & 58 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,7 +26,7 @@ Prieš tęsiant, išsiaiškinkime įprastinę terminologiją.
26
26
alert( y - x ); // 2, binarinis minusas atima vertes
27
27
```
28
28
29
-
Formaliai aukščiau esančiame pavyzdyje mes turime du skirtingus operatorius, kurie dalinasi tuo pačiu simboliu: neigimo operatorių, t.y. unarinį operatorių, kuris pakeičia simbolį, ir atimties operatorių, t.y. binarinį operatorių, kuris atima vieną skaičių iš kito.
29
+
Formaliai aukščiau esančiame pavyzdyje mes turime du skirtingus operatorius, kurie dalinasi tuo pačiu simboliu: neigimo operatoriumi, t.y. unariniu operatoriumi, kuris pakeičia simbolį, ir atimties operatoriumi, t.y. binarinu operatoriumi, kuris atima vieną skaičių iš kito.
30
30
31
31
## Eilutės sujungimas, binarinis +
32
32
@@ -56,7 +56,7 @@ Tačiau pastebėkite, kad operacijos vyksta iš kairės į dešinę. Jeigu pirmi
56
56
57
57
58
58
```js run
59
-
alert(2 + 2 + '1' ); // "41" and not "221"
59
+
alert(2 + 2 + '1' ); // "41" bet ne "221"
60
60
```
61
61
62
62
Eilutės sujungimas ir konversija yra ypatinga binarinio pliuso savybė `+`. Kiti aritmetiniai operatoriai veikia tik su skaičiais ir visada konvertuoja savo operandus į skaičius.
@@ -125,15 +125,15 @@ Kodėl unariniai pliusai pritaikomi vertėms pirmiau nei binarinis? Kaip pamatys
125
125
126
126
## Operatorių pirmenybė
127
127
128
-
Jeigu išraiška turi daugiau operatorių nei vieną, jų vykdymo tvarką yra nustatoma pagal jų *pirmenybę*, arba kitaip sakant, iš ankto numatytąjį operatorių prioritetą.
128
+
Jeigu išraiška turi daugiau operatorių nei vieną, jų vykdymo tvarka yra nustatoma pagal jų *pirmenybę*, arba kitaip sakant, iš ankto numatytąjį operatorių prioritetą.
129
129
130
130
Dar mokykloje sužinojome, kad daugyba tokioje išraiškoje `1 + 2 * 2` turėtų būti suskaičiuojama prieš sudėtį. Tai ir yra pirmenybė. Yra tariama, kad daugyba turi *aukštesnį prioritetą* negu sudėtis.
131
131
132
132
Skliausteliai perrašo bet kokią pirmenybę, tad jeigu mums netinka numatyta tvarka, mes galime juos panaudoti, kad tai pakeistume. Pavyzdžiui rašydami `(1 + 2) * 2`.
133
133
134
134
JavaScript turi daug operatorių. Kiekvienas operatorius turi atitinkamą pirmenybės numerį. Tas kas turi aukštenį numerį įvykdomas pirmiau. Jeigu prioritetas vienodas, įvykdymo eilė yra iš kairės į dešinę.
135
135
136
-
Štai ištrauka iš [pirmenybės lenteltės](https://developer.mozilla.org/en/JavaScript/Reference/operators/operator_precedence) (jums nereikia šito prisiminti, bet žinokite, kad unariniai operatoriai yra aukščiau už atitinkamus binarinius operatorius):
136
+
Štai ištrauka iš [pirmenybės lentelės](https://developer.mozilla.org/en/JavaScript/Reference/operators/operator_precedence) (jums nereikia šito prisiminti, bet žinokite, kad unariniai operatoriai yra aukščiau už atitinkamus binarinius operatorius):
137
137
138
138
| Pirmenybė | Pavadinimas | Ženklas |
139
139
|------------|------|------|
@@ -148,7 +148,7 @@ JavaScript turi daug operatorių. Kiekvienas operatorius turi atitinkamą pirmen
148
148
|3| asignavimas |`=`|
149
149
|...|...|...|
150
150
151
-
Kaip matome, "unarinis pliusas" turi `16` pirmenybę, kuri yra didesnė nei "sudėties"`13` (binarinis pliusas). Dėl tos priežasties, išraiškoje `"+apples + +oranges"`, unariniai pliusai suveikia pirmiau už sudėtį.
151
+
Kaip matome, "unarinis pliusas" turi pirmenybę `16`, kuri yra didesnė nei "sudėties"`13` (binarinis pliusas). Dėl tos priežasties, išraiškoje `"+apples + +oranges"`, unariniai pliusai suveikia pirmiau už sudėtį.
152
152
153
153
## Asignavimas
154
154
@@ -179,7 +179,7 @@ alert( c ); // 4
179
179
Sujungti į grandinę asignavimai įvertinami iš dešinės į kairę. Visų pirmą įvykdoma dešiniausiai esanti išraiška `2 + 2` ir priskiriama kintamiesiems esantiems dešinėje:`c`, `b` ir `a`. Galų gale visi kintamieji dalinasi viena verte.
Operatorius visada grąžina vertę. Tai yra akivaizdu tokiems kaip sudėtis `+` arba daugyba `*`. Bet asignavimas taip pat seka šita taisykle.
182
+
Operatorius visada grąžina vertę. Tai yra akivaizdu tokiems atvejams kaip sudėtis `+` arba daugyba `*`. Bet asignavimas taip pat seka šita taisykle.
183
183
184
184
Šaukimas `x = value` įrašo `value` į `x`*ir tada ją grąžina*.
185
185
@@ -199,12 +199,12 @@ alert( c ); // 0
199
199
200
200
Pavyzdyje aukščiau, išraiškos `(a = b + 1)` rezultatas yra vertė, kuri buvo priskirta `a` (tai yra `3`). Vėliau ji naudojama tolesniuose vertinimuose.
201
201
202
-
Kodas yra juokingas, juk taip? Turėtume suprasti kaip jis veikia, nes kartais tokius dalykus randame JavaScript bibliotekose, bet patys tokių geriau nerašykite. Tokie triukai tikrai nepaverčia kodo aiškesniu ir įskaitomesniu.
202
+
Koks juokingas kodas, juk taip? Turėtume suprasti kaip jis veikia, nes kartais tokius dalykus randame JavaScript bibliotekose, bet patys tokių geriau nerašykite. Tokie triukai tikrai nepaverčia kodo aiškesniu ir įskaitomesniu.
203
203
````
204
204
205
205
## Liekana %
206
206
207
-
Liekanos operatorius `%`, nepaisant jo išvaizdos, jis nėra susijęs su procentais.
207
+
Liekanos operatorius `%`, nepaisant jo išvaizdos, nėra susijęs su procentais.
208
208
209
209
Šios išraiškos `a % b` rezultatas yra liekana po sveikų skaičių dalybos `a` iš `b`.
210
210
@@ -235,7 +235,7 @@ Operatorius veikia ir su trupmenomis.
235
235
Pavyzdžiui:
236
236
237
237
```js run
238
-
alert( 4 ** (1/2) ); // 2 (laipsnis 1/2 yra taip pat kaip traukti iš šaknies, tai matematika)
238
+
alert( 4 ** (1/2) ); // 2 (laipsnis 1/2 yra taip pat kaip traukti iš šaknies, tai paprasta matematika)
239
239
alert( 8 ** (1/3) ); // 2 (laipsnis 1/3 taip pats kaip kubinė šaknis)
240
240
```
241
241
@@ -271,13 +271,13 @@ Operatoriai `++` ir `--` gali būti dedami tiek prieš, tiek ir po kintamojo.
271
271
- Kai operatorius eina po kintamojo, jis yra "priedėlio formoje" (ang. "postfix form"): `counter++`.
272
272
- "Priešdėlio forma" (ang. "prefix form") yra tada kai operatorius eina prieš kintamąjį: `++counter`.
273
273
274
-
Both of these statements do the same thing: increase `counter` by `1`.
274
+
Abu šie teiginiai daro tą patį: padidina `counter` vienu `1`.
275
275
276
-
Is there any difference? Yes, but we can only see it if we use the returned value of `++/--`.
276
+
Ar yra koks nors skirtumas? Taip, bet jį galime pamatyti tik naudodami grąžintą vertę iš `++/--`.
277
277
278
-
Let's clarify. As we know, all operators return a value. Increment/decrement is no exception. The prefix form returns the newvaluewhile the postfix form returns the old value (prior to increment/decrement).
278
+
Pasiaiškinkime. Kaip žinoma, visi operatoriai grąžina vertę. Padidinimas/sumažinimas ne išimtis. Priešdėlio forma grąžina naują vertę kai tuo tarpu priedėlio forma grąžina senąją formą (prieš padidinimą/sumažinimą).
279
279
280
-
To see the difference, here's an example:
280
+
Tam kad pamatytume skirtumą, pavyzdys:
281
281
282
282
```js run
283
283
let counter = 1;
@@ -286,64 +286,64 @@ let a = ++counter; // (*)
286
286
alert(a); // *!*2*/!*
287
287
```
288
288
289
-
In the line `(*)`, the *prefix* form `++counter` increments `counter` and returns the new value, `2`. So, the `alert` shows `2`.
289
+
Eilėje `(*)`, *priešdėlio* forma `++counter` padidina `counter` ir grąžina vertę `2`. Tad `alert` parodo `2`.
290
290
291
-
Now, let's use the postfix form:
291
+
Dabar patikrinkime priedėlio formą:
292
292
293
293
```js run
294
294
let counter = 1;
295
-
let a = counter++; // (*) changed ++counter to counter++
295
+
let a = counter++; // (*) pakeitėme ++counter į counter++
296
296
297
297
alert(a); // *!*1*/!*
298
298
```
299
299
300
-
In the line `(*)`, the *postfix* form`counter++`also increments `counter` but returns the *old*value (prior to increment). So, the `alert`shows`1`.
300
+
Eilutėje `(*)`, *priedėlio* forma `counter++` taip pat padidina `counter`, bet grąžina *senąją* vertę (dar prieš padidinimą. Tad `alert` parodo `1`.
301
301
302
-
To summarize:
302
+
Apibendrintai:
303
303
304
-
-If the result of increment/decrement is not used, there is no difference in which form to use:
304
+
- Jeigu padidinimo/sumažinimo rezultatas nėra naudojamas, nėra jokio skirtumo kokią formą naudoti:
305
305
306
306
```js run
307
307
let counter = 0;
308
308
counter++;
309
309
++counter;
310
-
alert( counter ); // 2, the lines above did the same
310
+
alert( counter ); // 2, abi eilės viršuje padarė tą patį
311
311
```
312
-
-If we'd like to increase a value *and* immediately use the result of the operator, we need the prefix form:
312
+
- Jeigu norime padidinti vertę *ir* iš karto panaudoti operatoriaus rezultatą, mums reikia priešdėlio formos:
313
313
314
314
```js run
315
315
let counter = 0;
316
316
alert( ++counter ); // 1
317
317
```
318
-
- If we'd like to increment a value but use its previous value, we need the postfix form:
318
+
- Jeigu norime padidinti vertę, bet naudoti jos senąją formą, mums reikia priedėlio formos:
319
319
320
320
```js run
321
321
let counter = 0;
322
322
alert( counter++ ); // 0
323
323
```
324
324
325
-
````smart header="Increment/decrement among other operators"
326
-
The operators `++/--`can be used inside expressions as well. Their precedence is higher than most other arithmetical operations.
325
+
````smart header="Padidinimas/sumažinimas tarp kitų operatorių"
326
+
Operatoriai `++/--` gali būti naudojami su išraiškomis. Pirmumas yra aukštesnis už didelę dalį kitų aritmetinių veiksmų.
327
327
328
-
For instance:
328
+
Pavyzdžiui:
329
329
330
330
```js run
331
331
let counter = 1;
332
332
alert( 2 * ++counter ); // 4
333
333
```
334
334
335
-
Compare with:
335
+
Palyginkite tai su:
336
336
337
337
```js run
338
338
let counter = 1;
339
-
alert( 2 * counter++ ); // 2, because counter++ returns the "old" value
Though technically okay, such notation usually makes code less readable. One line does multiple things--not good.
342
+
Nors techniškai viskas yra gerai, bet tokie žymėjimai dažniausiai padaro kodą sunkiau įskaitomu. Viena eilutė atlieka daug veiksmų -- negerai.
343
343
344
-
While reading code, a fast "vertical" eye-scan can easily miss something like `counter++`and it won't be obvious that the variable increased.
344
+
Skaitant kodą, greitas "vertikalus" skanavimas akimis gali praleisti tokį užrašą kaip `counter++` ir nebus pilnai aišku, kad kintamasis padidėjo.
345
345
346
-
We advise a style of "one line -- one action":
346
+
Mes patariame naudoti "viena eilutė -- vienas veiksmas" stilių:
347
347
348
348
```js run
349
349
let counter = 1;
@@ -352,13 +352,13 @@ counter++;
352
352
```
353
353
````
354
354
355
-
## Bitwise operators
355
+
## Bitų operatoriai
356
356
357
-
Bitwise operators treat arguments as 32-bit integer numbers and work on the level of their binary representation.
357
+
Bitų (ang. bitwise) operatoriai su argumentais elgiasi kaip su 32-bit sveikaisiais skaičias ir dirba jų binarinio pateikimo lygyje.
358
358
359
-
These operators are not JavaScript-specific. They are supported in most programming languages.
359
+
Tokie operatoriai nėra specifiniai vien JavaScript kalbai. Jie yra palaikomi didžiojoje dalyje programinių kalbų.
360
360
361
-
The list of operators:
361
+
Operatorių sąrašas:
362
362
363
363
- AND ( `&` )
364
364
- OR ( `|` )
@@ -368,77 +368,77 @@ The list of operators:
368
368
- RIGHT SHIFT ( `>>` )
369
369
- ZERO-FILL RIGHT SHIFT ( `>>>` )
370
370
371
-
These operators are used very rarely. To understand them, we need to delve into low-level number representation and it would not be optimal to do that right now, especially since we won't need them any time soon. If you're curious, you can read the [Bitwise Operators](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators) article on MDN. It would be more practical to do that when a real need arises.
371
+
Šie operatoriai naudojami labai retai. Kad juos suprastume, mums reikia pasinerti į žemo-lygio skaičių taikimą ir tai daryti šiuo metu nebūtų optimalu, juolabiau, kad mums jų greitu laiku neprireiks. Jeigu jums įdomu, galite daugiau paskaityti apie [Bitwise Operators](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators) MDN straipsnyje. Daug praktiškiau tai padaryti kai iškils tikras poreikis.
372
372
373
-
## Modify-in-place
373
+
## Keitimas vietoje (ang. Modify-in-place)
374
374
375
-
We often need to apply an operator to a variable and store the new result in that same variable.
375
+
Mums dažnai tenka kintamajam pritaikyti operatorių ir tuo pačiu patalpinti naują rezultatą į tą patį kintamajį.
376
376
377
-
For example:
377
+
Pavyzdžiui:
378
378
379
379
```js
380
380
let n = 2;
381
381
n = n + 5;
382
382
n = n * 2;
383
383
```
384
384
385
-
This notation can be shortened using the operators `+=` and `*=`:
385
+
Šis užrašas gali būti sutrumpintas naudojant operatorius `+=` ir `*=`:
386
386
387
387
```js run
388
388
let n = 2;
389
-
n += 5; // now n = 7 (same as n = n + 5)
390
-
n *= 2; // now n = 14 (same as n = n * 2)
389
+
n += 5; // dabar n = 7 (tas pats kaip n = n + 5)
390
+
n *= 2; // dabar n = 14 (tas pats kaip n = n * 2)
391
391
392
392
alert( n ); // 14
393
393
```
394
394
395
-
Short "modify-and-assign" operators exist for all arithmetical and bitwise operators: `/=`, `-=`, etc.
395
+
Trumpieji "keitimo-ir-priskyrimo" operatoriai egzistuoja visiems aritmetiniams ir bitų operatoriams: `/=`, `-=` ir t.t.
396
396
397
-
Such operators have the same precedence as a normal assignment, so they run after most other calculations:
397
+
Tokie operatoriai turi tokį patį pirmumą kaip ir įprastiniai asignavimai, tad jie dažniausiai vykdomi po didžiosios dalies kitų skaičiavimų:
398
398
399
399
```js run
400
400
let n = 2;
401
401
402
402
n *= 3 + 5;
403
403
404
-
alert( n ); // 16 (right part evaluated first, same as n *= 8)
404
+
alert( n ); // 16 (pirma įvykdoma dešinė pusė, tas pats kaip būtų n *= 8)
405
405
```
406
406
407
-
## Comma
407
+
## Kablelis
408
408
409
-
The comma operator `,` is one of the rarest and most unusual operators. Sometimes, it's used to write shorter code, so we need to know it in order to understand what's going on.
409
+
Kablelio operatorius `,` yra vienas iš rečiausių ir neįprasčiausių operatorių. Kartais jis naudojamas, kad sutrumpintume kodą, tad turime apie jį žinoti, kad suprastume kas vyksta.
410
410
411
-
The comma operator allows us to evaluate several expressions, dividing them with a comma `,`. Each of them is evaluated but only the result of the last one is returned.
411
+
Kablelio operatorius leidžia įvertinti kelias išraiškas, atskirdamas jas kableliu `,`. Kiekviena jų įvykdoma, tačiau grąžinamas tik rezultatas iš paskutinės išraiškos.
412
412
413
-
For example:
413
+
Pavyzdžiui:
414
414
415
415
```js run
416
416
*!*
417
417
let a = (1 + 2, 3 + 4);
418
418
*/!*
419
419
420
-
alert( a ); // 7 (the result of 3 + 4)
420
+
alert( a ); // 7 (3 + 4 rezultatas)
421
421
```
422
422
423
-
Here, the first expression `1 + 2` is evaluated and its result is thrown away. Then, `3 + 4` is evaluated and returned as the result.
423
+
šiuo atveju išraiška `1 + 2` yra įvertinama, bet jos rezultatas išmetamas. Tada įvertinama `3 + 4` ir grąžinamas jos rezultatas.
424
424
425
-
```smart header="Comma has a very low precedence"
426
-
Please note that the comma operator has very low precedence, lower than `=`, so parentheses are important in the example above.
425
+
```smart header="Kablelis turi labai žemą prioritetą"
426
+
Atkreipkite dėmesį, kad kablelio operatorius turi labai žemą prioritetą, žemesnį nei `=`, dėl to skliausteliai yra labai svarbūs kaip pavyzdyje aukščiau.
427
427
428
-
Without them: `a = 1 + 2, 3 + 4` evaluates `+` first, summing the numbers into `a = 3, 7`, then the assignment operator `=` assigns `a = 3`, and the rest is ignored. It's like`(a = 1 + 2), 3 + 4`.
428
+
Be jų: `a = 1 + 2, 3 + 4` pirma įvertina `+` susumuodamas visus skaičius į `a = 3, 7`, o tada užduoties operatorius `=` priskiria `a = 3`, o visa kita yra ignoruojama. Panašiai lyg tai būtų `(a = 1 + 2), 3 + 4`.
429
429
```
430
430
431
-
Why do we need an operator that throws away everything except the last expression?
431
+
Kam mums reikalingas operatorius, kuris išmeta viską išskyrus paskutinę išraišką?
432
432
433
-
Sometimes, people use it in more complex constructs to put several actions in one line.
433
+
Kartais žmonės jį naudoja sudėtingesniuose konstruktuose, kad sudėtų kelis veiksmus į vieną eilę.
434
434
435
-
For example:
435
+
Pavyzdžiui:
436
436
437
437
```js
438
-
//three operations in one line
438
+
// trys operacijos vienoje eilutėje
439
439
for (*!*a = 1, b = 3, c = a * b*/!*; a < 10; a++) {
440
440
...
441
441
}
442
442
```
443
443
444
-
Such tricks are used in many JavaScript frameworks. That's why we're mentioning them. But usually they don't improve code readability so we should think well before using them.
444
+
Tokie triukai dažnai naudojami JavaScript struktūrose (ang. frameworks). Dėl to juos ir paminėjome. Bet dažniausiai jie nepalengvina kodo skaitymo tad turėtume gerai pagalvoti prieš juos naudodami.
0 commit comments