Por que ++[[]][+[]]+[+[]] retorna a string "10" em JavaScript?
Olá a todos! Estou estudando JavaScript e me deparei com um código muito estranho. Em um artigo vi a seguinte expressão:\n\n```javascript\nconsole.log(++[[]][+[]]+[+[]]); // Exibe "10"\n```\n\nEu não entendo como isso funciona. Por que um array, mais mais, um array vazio entre colchetes e mais um array vazio resultam na string "10"? Eu sei que em JS existe coerção de tipos, mas isso parece mágica.\n\nTentei analisar isso por partes, mas fiquei ainda mais confuso. Por exemplo, o que significa `++[[]]`? Ou `+[]`? Como disso tudo resulta exatamente "10", e não outra coisa? Alguém poderia explicar passo a passo o que acontece nessa expressão?\n\nFicarei muito grato por uma explicação detalhada, pois quero entender como operadores e coerção de tipos funcionam em JavaScript em um nível profundo. Obrigado.