YogeshChauhan . com

What happens when we add Numbers and Strings in JavaScript?

in JavaScript on May 5, 2020

Adding Numbers and Strings in JavaScript

JavaScript uses the + operator for both addition and concatenation. Numbers are added. Strings are concatenated.

Add two numbers and the result will be a number:


var x = 100;
var y = 200;
console.log(x + y);  //300

Add two strings and the result will be a string concatenation:


var x = "100";
var y = "200";
console.log(x + y);  //100200

Add a number and a string and the result will be a string concatenation as well:


var x = 100;
var y = "200";
console.log(x + y);  //100200

Same result with a string and a number addition as well


var x = "100";
var y = 200;
console.log(x + y);  //100200

So, we can easily concatenate a simple addition to a string. right?

NOPE.

Look at this result:


var x = 100;
var y = 200;
var z = "The result is: " + x + y;
console.log(z); 

//The result is: 100200

Weird!

What about string concatenation of two numbers and a string then? One number and one string works perfectly fine. So this should work too. Right?

NOPE!

Look at this result:


var x = 100;
var y = 200;
var w = "300";
var z = x + y + w;
console.log(z);

//300300

But if you interchange the position, the result would be:


var x = 100;
var y = 200;
var w = "300";
var z = x + w + y;
console.log(z); 

//100300200

Explanation

The JavaScript interpreter works from left to right.

Simple numbers 100 + 200 is added because x and y are both numbers.

Then 300 + "300" is concatenated because w is a string.

Similarly, 100 + "300" is concatenated because w is a string and then again "100300" + 200 concatenated because the "100300" is a string.

Numeric Strings

JavaScript strings can have numeric content and it will try to convert strings to numbers in all numeric operations.

So, all of the following operations will give you normal result. 


var x = "20";
var y = "5";
var z = x / y;
console.log(z); 

//4

var x = "20";
var y = "5";
var z = x * y;
console.log(z); 

//100

var x = "20";
var y = "5";
var z = x - y;
console.log(z);

//15

But as we have already experienced, we can not do that with addition(+).


var x = "20";
var y = "5";
var z = x + y;
console.log(z); 

//205

It happens because JavaScript uses the + operator to concatenate the strings.

NaN

If we try to divide a number by different kinds of string, we get different results as well.

First let's try non-numeric string.


var x = 100 / "string";  

console.log(x);

//NaN

NaN is a JavaScript reserved word indicating that a number is not a legal number.

Let's try a numeric string now:


var x = 100 / "100";  

console.log(x);

//1

isNaN()

To avoid crashing in math functions we can always use isNaN() to check if the result is a number and we can add what to do if the result is not a number. That will save the day!

Just like this example:


var x = 100 / "string";  
if(isNaN(x)){
  console.log("It's NOT a number");
}
else{
  console.log("It's a number!");
}

//It's NOT a number

Why would we need to check?

Because sometimes the maths formulas are connected to each other and we need to use results of a particular function to another function or formula and if that variable is not a number, it might make everything else NaN as well.

Take a look at this example:


var x = NaN;
var y = 100;
var z = x + y;      

console.log(z);

//NaN

Even the concatenation will be NaN


var x = NaN;
var y = "100";
var z = x + y;      

console.log(z);

//NaN100

Do NOT just check for NaN using typeof because it will result in a number as NaN is a type of a number!


console.log(typeof NaN);

// number
amazon

Most Read

#1 How to check if radio button is checked or not using JavaScript? #2 Solution to “TypeError: ‘x’ is not iterable” in Angular 9 #3 How to add Read More Read Less Button using JavaScript? #4 How to uninstall Cocoapods from the Mac OS? #5 How to Use SQL MAX() Function with Dates? #6 PHP Login System using PDO Part 1: Create User Registration Page

Recently Posted

Jun 16 What are Stored Procedures for SQL Server? Jun 16 What are Class Constants in PHP? Jun 15 A short basic guide on states in React Jun 15 How to define constants in PHP? Jun 15 How to define visibility for a property in PHP? Jun 15 How to use @if and @else in SCSS?

You might also like these

How to use @if and @else in SCSS?SCSSHow to add Laravel to WordPress using Sage theme (and install Tailwind CSS)?PHPHow to check if a link has http or https in it in JavaScript?JavaScriptHow to Check If a Variable is an Integer, a Float, a Number, NaN, an Infinite or a Numeric in PHP?PHPHow to add a Line Chart in Angular App?AngularSolution to Precision Problem in JavaScript NumbersJavaScript