@Deti:
Matko Święta!
Czy jest jakaś istotna przewaga stosowania w tym przypadku tej dziwacznej kombinacji operatorów ~~foo nad napisaniem po prostu +foo (jednoargumentowy plus)? :P
Jeśli miałbym używać skrótów w postaci operatorów, wolałbym to już zapisać tak:
document.getElementById('p').innerHTML = +document.getElementById('p').innerHTML + 1;
Naturalnie, gdy chcemy zrobić niejawny parseInt na czymś w środku wyrażenia, można użyć nawiasów (2 + (+foo) * 3), ale tutaj nie jest to konieczne.
PS. Nie wiem który raz od 10 lat widzę użycie w JavaScripcie operatora ~. Drugi? Piąty? ;)