Sachverhalt: A. D._ und E._ sind Eigentümer des Grundstücks Nr. 3182, Grundbuch (GB) Kriens, das sich gemäss Zonenplan in der Wohnzone A befindet. Am 2. März 2016 bewilligte der Gemeinderat Kriens ihnen den Abbruch des bestehenden Wohnhauses und den Neubau eines Dreifamilienhauses mit gedeckten Autoabstellplätzen auf diesem Grundstück. Dieser Entscheid blieb unangefochten. Am 25. Januar 2018 reichten D._ und E._ ein Baugesuch für eine Projektänderung ein. Dieses umfasst den Verzicht auf das Kellergeschoss und zahlreiche Änderungen im Untergeschoss, im Erdgeschoss und im Attikageschoss. Während der öffentlichen Auflage des Baugesuchs erhoben A._ sowie B._ und C._ gemeinsam Einsprache gegen das Vorhaben. Am 7. November 2018 erteilte der Gemeinderat (seit 1. Januar 2019 Stadtrat) Kriens D._ und E._ die nachgesuchte Baubewilligung unter Bedingungen und Auflagen und wies die Einsprache ab. Die Baubewilligung vom 7. November 2018 fochten A._ sowie B._ und C._ am 4. Dezember 2018 mit Beschwerde beim Kantonsgericht Luzern an. Das Kantonsgericht hiess mit Urteil vom 20. Januar 2020 die Beschwerde in zwei untergeordneten Punkten (Bewilligung eines zu grossen Dachvorsprungs, Kostenauflage für das Einspracheverfahren) gut und wies sie im Übrigen ab. B. Mit Beschwerde in öffentlich-rechtlichen Angelegenheiten vom 28. Februar 2020 ans Bundesgericht beantragen A._ sowie B._ und C._ die Aufhebung des Urteils des Kantonsgerichts und des kommunalen Baubewilligungsentscheids. D._ und E._ und das Kantonsgericht ersuchen um Abweisung der Beschwerde. Die Stadt Kriens stellt Antrag auf Abweisung der Beschwerde, soweit darauf einzutreten sei. Das Bau-, Umwelt- und Wirtschaftsdepartement des Kantons Luzern verweist auf die Ausführungen im angefochtenen Urteil. C. Mit Verfügung vom 25. März 2020 hat das präsidierende Mitglied der I. öffentlich-rechtlichen Abteilung das Gesuch der Beschwerdeführer um aufschiebende Wirkung abgewiesen.