Это из-за приоритета оператора. Посмотрите на выражение:
'Mathematical Operators : ' + '\n' + 'Addition Result : ' + x+y + '\n' + 'Subtraction Result : ' + x-y + '\n\n\n\n'
Это упрощает до:
'foo ' + x + y + ' bar ' + x - y + ' baz'
И +
, и -
имеют одинаковый приоритет и оценивают слева направо. Когда строка находится по обе стороны от +
, результат конкатенации:
'foo ' + x + y + ' bar ' + x - y + ' baz' // simplifies to:
'foo ' + 100 + 50 + ' bar ' + 100 - 50 + ' baz' // simplifies to:
'foo 100' + 50 + ' bar ' + 100 - 50 + ' baz' // simplifies to:
'foo 10050' + ' bar ' + 100 - 50 + ' baz' // simplifies to:
'foo 10050 bar ' + 100 - 50 + ' baz' // simplifies to:
'foo 10050 bar 100' - 50 + ' baz'
Но -
всегда означает вычитание, и строки, которые не могут быть преобразованы в числа, не могут быть вычтены, поэтому это дает NaN в результате. Аналогично:
console.log('foo' - 5);
Поставьте скобки вокруг выражений, которые вы хотите вычислить первыми.
'Mathematical Operators : ' + '\n' + 'Addition Result : ' + (x+y) +
// ^^^^^
'\n' + 'Subtraction Result : ' + (x-y) + '\n\n\n\n'
// ^^^^^