Как лучше оптимизировать и сделать мой код на JavaScript красивее и короче?
Sp1keazyYT вы бы дали пояснение к коду, что он должен делать. Потому что сейчас он написан так, что при любом ненулевом значении roofpt, значение Price2 будет равно 7900, соответственно второй else if просто бессмыслен.
Поэтому, если именно этот код переписывать, то можно так:let Price2 = 0;

if (!roofpt) Price2 = 5500;
else Price2 = 7900;
или такlet Price2 = 0;

Price2 = (roofpt) ? 7900 : 5200;
Если это практическая задача, а не собеседование с глубоко зарытыми подвохами, то так:if (!roofpt) Price2 = 5500; // null, 0, undefined, false, пустая строка
else if (roofmat == 1) Price2 = 7900; // и так известно, что не пустое
else if (roofmat == 2) Price2 = 8900; // и так известно, что не пустое
else Price2 = 0; // по умолчаниюЕсли же это из собеседования
В исходном коде есть такая деталь. Приоритет операторов в JS ставит && выше, чем ||. Эти два условия выглядят похоже, имелась в виду, наверное, лишняя перепроверка на null/ноль:(roofpt  == null || roofpt  == 0) 
(roofpt !== null || roofpt !== 0 && roofmat == 1)
Но сначала &&, потом ||:A || B && C === A  ||  (B && C)
// и второе условие на деле считается так:
(roofpt !== null || (roofpt !== 0 && roofmat == 1))
Т.е. второе условие выполнится и просто при любом rootpt,  неравном null.
Тут же ещё одна деталь. Нестрогое равенство == и строгое неравенство !==. Разжёвывать не буду, чтобы вы провалили собеседование.