Trocar o valor de duas variáveis sem usar uma variável auxiliar

Pense na situação em que precisamos que o valor da variável a seja passado para variável b, mas não temos disponível uma terceira variável para guardar o valor temporariamente e realizar a troca! E então como fazemos isso? A resposta é matemática.

Trocando o valor de duas variáveis usando JavaScript (como exemplo)

let a = 10
let b = 2.5

a = a + b
b = a - b
a = a - b

console.log(`a = ${} \n b = ${b} `)

Nota:

Este é um algoritmo encontrado normalmente no meio académico e em concursos de algoritmos e lógica de programação que estou acostumado a participar.

algumas linguagens possuem o comando Swap

Exemplo:

a=1: b=2
PRINT "Antes: "; a, b
SWAP a, b
PRINT "Depois: "; a, b
Não conhecia o Swap, mas darei uma olhada!
https://www.qbasic.net/en/reference/qb11/Statement/SWAP.htm

Nem toda linguagem de programação possui esse tipo de operação. Acredito que JS não tenha.

Veja esses exemplos em Kotlin, onde isso é possível.

Código mais "convencional" em Kotlin de como fazer swap de variável:

var temp  = a;
   a = b;
   b = temp;

Outras alternativas:

b = a.apply {a = b} 
b = a.also {a = b}

Lembrando que os nomes a e b foram colocados apenas como exemplo para deixá-los mais genéricos. Em um código real, o ideal é dar nomes mais descritivos.

Não conhecia o swap, estudarei acerca! Obrigado

Achei excessivamente complexo para algo simples, já que é difícil entender o que esse trecho de código faz sem realizar um "teste de mesa", mas é um jeito interessante de pensar.

SkeBug, aproveitei para editar a sua publicação porque a primeira linha do código não estava aparecendo, e coloquei um destaque para o código como javascript. Recomendo que clique em Editar para ver como ficou, e dê uma lida em [DICA]: Como escrever artigos no TabNews., na seção de Código, ou use a ajuda do editor conforme mostrado aqui.

Talvez eu deve-se colocar uma observação que este é um tipo de algoritmo comum no meio académico (pelo menos no que frequentei) e aparece muito em concursos de algoritmos e lógica de programação (novamente, dos que já participei 😅)
De fato essa é uma informação relevante. Isso é utilizado em concursos de algoritmos por algum motivo específico? Por exemplo, precisa economizar memória ou isso deixa a execução mais rápida?
### Depende muito... Algumas linguagens mais antigas (e até mesmo algumas poucas linguagens modernas); quando compiladas (ou interpretadas), irão criar variáveis temporárias para cada uma das atribuições; ou seja seriam criadas três variáveis temporárias para o código em questão. Ficando mais lento Mas se o código for reescrito em C; usando inteiros e armazenando os resultados nos registradores; então fica mais rápido. entretanto; se o processador for um Xeon (que possue a tecnologia quad channel), então endereçar uma variável na memória RAM acaba sendo mais rápido do que executar três operações aritméticas nos registradores.

Não tenho certeza neste caso, mas trabalhar com operações aritméticas com floats pode ser um pouco complexo e talvez não trará o resultado experado.

Aqui temos alguns detalhes sobre.

Digamos que este não é um problema comum e apesas da proposta ser interessante não acho que resolve uma dor latente para a maior parte dos devs.

Voce teria um exemplo de caso real @SkeBug?

Tens razão no que diz respeito a não ser uma dor para maioria dos devs para não dizer que não é uma dor para nenhu dev! Este é um problema que é muito comum no meio académico e em concursos de algoritmos de algoritmos e lógica de programação. Sendo apenas uma maneira de testar o raciocínio lógico com o raciocínio matemático.