Can you explain object and array arithmetic in javascript
javascript
Solution
When using the `+` operator javascript will attempt to convert the elements being added together first into a string, then into an int. When you cast an empty array to a string you get `""` therefore `"" + "" = ""`
[] + [] = "" // equates to "" + "" = ""
When using the `-` operator javascript will attempt to convert the element into integers. Empty arrays cast into integers will product `0` so `0 - 0 = 0`
[] - []= 0 // equates to 0 - 0 = 0
Same thing here, the empty array is being converted to `""` and the object is being converted to `"[object Object]"` because of the concatenation with the empty string the result is `"" + "[object Object]" = "[object Object]"`
[] + {} = "[object Object]" // equates to "" + "[object Object]" = "[object Object]"
`{}` cannot be cast to an int so is instead cast to `undefined` and `0 - undefined = NaN`
[] - {} = NaN // equates to 0 - undefined = NaN
When an expressions starts with an empty object literal javaScript interprets the first {} as an empty code block and ignores it so evaluates the following expressions as `+ {}` which is `NaN`
{} + {} = NaN // equates to + {} = NaN
{} - {} = NaN // equates to - {} = NaN
{} + 1 = 1 // equates to + 1 = 1
Problem
Can anyone explain why these operations yield these results: (I understand the first one is somehow related to strings being based on arrays but what does 'based on' mean here, how does it work internally) ``` [] + [] = "" [] - []= 0 [] + {} = "[object Object]" [] - {} = NaN {} + {} = NaN {} - {} = NaN {} + 1 = 1 ```