No sé por qué la declaración if-else dada en la pregunta funciona incorrectamente. Incluso cashProvided.value >billAmount.value sigo recibiendo el errorMsg que se está ejecutando en la instrucción else. Intenté usar console.log() en diferentes partes de mi código para ver dónde me estaba equivocando, pero no puedo resolverlo yo mismo. ¿Alguna sugerencia? 
const billAmount=document.querySelector("#bill-amount"); const cashProvided=document.querySelector("#cash-given"); const checkButton=document.querySelector("#Check"); const numberOfNotes=document.querySelectorAll(".no-of-notes"); const errorMsg=document.querySelector("#error-msg"); checkButton.addEventListener("click",clickHandler); notes=[2000,500,100,20,10,5,1]; if(cashProvided.value >= billAmount.value) { console.log("inside if"); console.log('Bill='+billAmount.value); console.log("Cash Provided="+cashProvided.value); var change=cashProvided.value-billAmount.value; console.log("Change="+change) for(i=0;i<notes.length;i++) { console.log(notes.length); console.log("entered for"); var numOfNotes=Math.trunc(change/notes[i]); numberOfNotes[i].innerText=numOfNotes; change%=notes[i]; console.log("new change "+change); } } else { console.log(billAmount.value); console.log(cashProvided.value); errorMsg.style.display="block"; errorMsg.innerText="You want to wash plates or what? Gimme atleast "+billAmount.value; }Los valores vienen como una cadena. primero debe analizar el valor.
segunda forma: if(parseInt(cashProvided.value, 10) >= parseInt(billAmount.value, 10))
también puede configurarlos como variables fuera de la declaración if.
Editar: en respuesta al comentario de Peter. debe incluir un segundo argumento intuo parseInt función. determinará la base. Supongo que estás usando 10 base.
El tipo de valor de entrada es String , primero debe analizarlo como entero o número.
const cash = parseInt(cashProvided.value); const bill = parseInt(billAmount.value); //use cash and bill instead of cashProvided.value, billAmount.value ...