# Javascript - Leading zero to a number converting the number to some different number. not getting why this happening?

A leading zero to some number converting the number to some unknown number format. for example :

`017` is getting converted to `15`

`037` is getting converted to `31`

Also found that numbers having 8 0r 9 at end are remaining same for example :

`018` is `18`

`038` is `38`

`o59` is `59`

one more thing that I found is

for each next range of 10 the difference between converted value and the actual value get incremented by 2

for example :

for range `00-09` difference is `0` i.e value of 07 will be 7, 04 will be 4

for range `010-019` difference is `2` value of 017 will be 15, 013 will be 11

for range `020-029` difference is `4` value of 027 will be 23, 021 will be 17

and so on..

here is a snipet for test http://jsfiddle.net/rajubera/BxQHF/

I am not getting why this is happening ?

If there is a leading 0, it is converting it to octal (base 8) as long as its a valid number in base 8 (no numbers greater than 7).

For example:

`017` in base 8 is 1 * 8 + 7 = 15 `037` in base 8 is 3 * 8 + 7 = 31

`018` is converted to `18` because `018` isn't a valid number in base 8

Note that the behavior as to which base the number is converted to by default can be browser-specific, so its important to always specify the base/radix when using `parseInt`:

`parseInt("017",10) === 17`

`parseInt` expects a `string` as the first argument, so

`parseInt("012",10) === 12`

One of the reasons to `"use strict";`

``````(function() {"use strict"; 017})()

// Firefox => SyntaxError: "0"-prefixed octal literals and octal escape sequences are deprecated; for octal literals use the \"0o\" prefix instead
// Chrome, Node => SyntaxError: Octal literals are not allowed in strict mode.
``````

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Deprecated_octal