Accessories after the fact!
JavaScript (ES6), 58 56 bytes

Saved two bytes thanks to Martin Ender.



let f =
x=&gt;x.replace(/[^!]+/g,eval).replace(/!(\d*)!?\d*/g,"$1")
&lt;input value="2+2!5+5" oninput="try{O.value=f(value)}catch(e){}"&gt;&lt;br&gt;
&lt;input id=O value="410" disabled&gt;




Might be improved somehow...