Cole was born in Simi Valley, California. He was drafted by the Los Angeles Dodgers in the 26th round of the 2007 Major League Baseball draft out of Bishop Gorman High School in Las Vegas, Nevada. He did not sign, and instead attended the College of Southern Nevada. He was drafted again, this time by the Arizona Diamondbacks in the 31st round of the 2008 Major League Baseball draft, and again did not sign. Cole did not play baseball in 2009 and 2010 while he was on his Mormon Mission. He returned to pitch in 2011 for the Brigham Young University Cougars baseball team. Cole was drafted a third time, by the Toronto Blue Jays in the 29th round of the 2011 Major League Baseball draft. He signed with the Blue Jays and made his professional debut with the Vancouver Canadians, making 11 appearances in 2011 and posting a 1–3 win–loss record, 5.88 ERA, and 25 strikeouts in 33 innings. Cole played the entire 2012 season in Vancouver and greatly improved, posting a 6–0 record, 0.81 ERA, and 57 strikeouts in 66 innings. He played the majority of the 2013 season with the Lansing Lugnuts, and made 1 start for the Dunedin Blue Jays at the end of the season. Cole would pitched to a combined 7–12 record, 3.94 ERA, and 103 strikeouts in 137 innings. In 2014, Cole pitched mostly for Dunedin and made two starts for the Double-A New Hampshire Fisher Cats. He finished the season with a combined 8–11 record, 3.43 ERA, and an MiLB-leading 181 strikeouts. Cole played the entire 2015 season with New Hampshire, pitching to a 7–10 record, 4.06 ERA, and 128 strikeouts in a career-high 164 innings. Cole was invited to Major League spring training on January 12, 2016, and reassigned to minor league camp on March 12. He battled injuries in 2016, pitching only 77 innings and posting a 4–4 record, 3.97 ERA, and 62 strikeouts.
Toronto Blue Jays
Cole was called up to the Blue Jays on August 5, 2017. He made his debut on August 9, pitching one inning of the Blue Jays' 11–5 loss to the New York Yankees. Cole allowed four earned runs and struck out Aaron Judge for his first MLB strikeout. The following day, Cole was placed on the disabled list with a broken toe. On August 14, Cole was released. Cole signed a minor-league contract with the Blue Jays on August 18, and was added to the 40-man roster on September 29. He was outrighted to Triple-A on November 6, 2017, and elected free agency the following day.
Los Angeles Angels
On March 4, 2018, Cole signed a minor league contract with the Los Angeles Angels. On June 28, Cole was added to the team's active roster. For the 2018 season, he was 4-2 with a 2.75 ERA and 39 strikeouts in 36 innings. On July 12, 2019, Cole pitched two innings in a combined no-hitter against the Seattle Mariners. Cole was designated for assignment by the Angels on March 22, 2020.