Faits :
A.
Par jugement du 28 février 2018, le Tribunal de police de l'arrondissement de Lausanne a, notamment, libéré X._ des chefs d'accusation de menaces, menaces qualifiées et contravention à la Loi fédérale sur les stupéfiants, a constaté qu'il s'était rendu coupable de lésions corporelles simples, de voies de fait, de dommages à la propriété, d'injure et d'infraction à la Loi fédérale sur les étrangers et l'a condamné à une peine privative de liberté de 150 jours, sous déduction d'un jour de détention avant jugement, peine entièrement complémentaire à celle prononcée par le Tribunal de police de l'arrondissement de Lausanne le 9 août 2016 et à celle prononcée par le Ministère public de l'arrondissement de Lausanne le 8 novembre 2016.
B.
Par jugement du 13 août 2018, la Cour d'appel pénale du Tribunal cantonal vaudois a rejeté l'appel formé par X._ contre le jugement du Tribunal de police du 28 février 2018 et a confirmé celui-ci.
La cour cantonale a retenu les faits suivants:
B.a. Époux de A._, X._ est né en 1982 en Algérie, pays dont il est ressortissant. Actuellement en instance de divorce, il n'a plus de statut légal en Suisse. Une date de départ a été arrêtée au début du mois de mars 2018, mais l'intéressé n'a pas obtempéré à son renvoi. X._ et A._ sont les parents de l'enfant B._, né en 2005.
B.b. Le casier judiciaire suisse de X._ fait état d'une condamnation, le 30 septembre 2009, pour voies de fait et menaces, d'une condamnation, le 7 juin 2010, pour vol et dommages à la propriété, d'une condamnation, le 6 février 2012, pour délit contre la Loi fédérale sur les armes, d'une condamnation, le 3 décembre 2012, pour contravention selon l'art. 19a de la Loi fédérale sur les stupéfiants, voies de faits, menaces et séjour illégal, d'une condamnation, le 12 septembre 2013, pour vol, d'une condamnation, le 8 janvier 2014, pour injure, opposition aux actes de l'autorité, séjour illégal et contravention selon l'art. 19a de la Loi fédérale sur les stupéfiants, d'une condamnation, le 13 mars 2014, pour séjour illégal, d'une condamnation, le 16 novembre 2015, pour séjour illégal et d'une condamnation, le 11 février 2016, pour vol.
Le 9 août 2016, X._ a été condamné par le Tribunal de police de l'arrondissement de Lausanne, pour lésions corporelles simples, vol, dommages à la propriété, injure, utilisation abusive d'une installation de télécommunication, menaces, violation de domicile, opposition aux actes de l'autorité, insoumission à une décision de l'autorité, séjour illégal et contravention selon l'art. 19a de la Loi fédérale sur les stupéfiants à une peine privative de liberté de huit mois et à une amende de 800 francs.
Le 8 novembre 2016, il a été condamné par le Ministère public de l'arrondissement de Lausanne pour séjour illégal à une peine privative de liberté de 20 jours, complémentaire à celle prononcée le 9 août 2016 par le Tribunal de police de l'arrondissement de Lausanne.
B.c. Entre le 22 avril 2016 (le séjour illicite antérieur ayant déjà été sanctionné) et le 21 juillet 2016, X._ a séjourné illégalement en Suisse.
B.d. Le 2 juillet 2016, à C._, A._ a eu un contact téléphonique avec son mari X._, qui l'a informée qu'il n'avait pas l'intention de ramener l'enfant B._ à l'heure prévue mais plus tard seulement. La mère avait réussi à savoir où se trouvait son fils grâce à une adresse que ce dernier lui avait communiquée par message. Elle s'est rendue à l'adresse en question et a demandé à X._ de la laisser récupérer l'enfant. C'est à ce moment-là, à tout le moins, que X._ l'a traitée de " pute " et de " connasse ". Il lui a dit qu'il n'avait pas l'intention de lui laisser leur enfant comme convenu et qu'elle pouvait " aller se faire foutre ". Il lui a ensuite lancé un sac plastique au visage, puis l'a attrapée par le bras, avant de lui donner un coup sur la tête. A._ a sorti un spray au poivre pour se défendre mais X._ l'a désarmée. Elle ne pouvait du reste pas utiliser ce moyen de défense car l'enfant s'était interposé entre ses parents. Finalement, A._ a réussi à se libérer et à s'enfuir en courant avec son fils. Elle s'est ensuite réfugiée dans un parc public. A._ a déposé plainte et s'est constituée demanderesse au pénal et au civil.
B.e. Le 12 juillet 2016, à C._, X._ a interpellé un nommé D._ en lui disant " Connard, tu ne dis pas bonjour? ", puis il l'a saisi par le cou et lui a donné un petit coup de poing dans le ventre. Voyant sa victime sortir son téléphone pour appeler la police, il lui a asséné quatre ou cinq coups de poing au visage qui l'ont fait tomber au sol. X._ a continué à frapper avec ses mains D._ alors que celui-ci était à terre, jusqu'à ce que des tiers interviennent. D._ est parti en courant se réfugier dans le magasin E._, mais X._ l'a rattrapé et l'a à nouveau frappé. Durant l'altercation, les lunettes de la victime sont tombées et leur monture s'est tordue. D._ a souffert de plusieurs hématomes aux paupières ainsi que d'ecchymoses sur la tempe et la pommette. Il a déposé plainte et s'est constitué demandeur au civil et au pénal.
C.
X._ forme un recours en matière pénale auprès du Tribunal fédéral contre le jugement du 13 août 2018. Il conclut, avec suite de frais et dépens, principalement, à sa réforme en ce sens qu'il est condamné à une peine privative de liberté de 60 jours, sous déduction d'un jour de détention avant jugement, peine entièrement complémentaire à celle prononcée par le Tribunal de police de l'arrondissement de Lausanne le 9 août 2016 et à celle prononcée par le Ministère public de l'arrondissement de Lausanne le 8 novembre 2016. Subsidiairement, il conclut à l'annulation du jugement du 13 août 2018 et à ce que la cour cantonale soit invitée à renvoyer la cause en première instance, pour que celle-ci prenne en considération l'<ref-law>. En outre, il sollicite l'assistance judiciaire et l'octroi de l'effet suspensif.
D.
Invités à se déterminer sur le recours, la cour cantonale et le ministère public y ont renoncé et se sont référés à la décision attaquée.

Considérant en droit :
1.
Le recourant se plaint d'une violation de l'<ref-law>. Dans son mémoire de recours, il soutient que si le premier juge avait eu à connaître de l'ensemble des faits le 28 février 2018, il " n'aurait pas aggravé de cinq mois la peine fixée et ne l'aurait pas portée à [une peine d'ensemble de] treize mois de privation de liberté, mais se serait arrêté à une peine d'une quotité sensiblement inférieure, sans doute à 10 mois de privation de liberté ".
1.1. Selon l'<ref-law>, si le juge doit prononcer une condamnation pour une infraction que l'auteur a commise avant d'avoir été condamné pour une autre infraction, il fixe la peine complémentaire de sorte que l'auteur ne soit pas puni plus sévèrement que si les diverses infractions avaient fait l'objet d'un seul jugement. Cette disposition permet de garantir l'application du principe d'aggravation contenu à l'<ref-law> également en cas de concours rétrospectif (<ref-ruling> consid. 2.3.1 p. 267; <ref-ruling> consid. 6.1.2 p. 67; arrêt 6B_879/2016 du 22 juin 2017 consid. 2.1).
1.1.1. Le principe de l'aggravation ne s'applique qu'aux peines du même genre. Des peines d'un genre différent doivent être cumulées. Le juge ne peut prononcer une peine privative de liberté d'ensemble que si, dans un cas concret, il choisit la même peine pour toutes les infractions (cf. arrêt 6B_559/2018 du 26 octobre 2018 consid. 1.1 destiné à la publication; <ref-ruling> consid. 2.2 p. 219). Ces conditions valent également pour la peine complémentaire en cas de concours rétrospectif selon l'<ref-law> (<ref-ruling> consid. 2.3.2 p. 268; <ref-ruling> consid. 4.3.1 p. 58; cf. également arrêt 6B_1037/2018 du 27 décembre 2018 consid. 1.3 destiné à la publication).
1.1.2. Lorsque les conditions nécessaires pour prononcer une peine complémentaire sont remplies, le tribunal fixe tout d'abord une peine d'ensemble hypothétique. Concrètement, le juge se demande d'abord quelle peine d'ensemble aurait été prononcée si toutes les infractions avaient été jugées simultanément (arrêt 6B_1141/2017 du 7 juin 2018 consid. 4.1). Dans ce contexte, le juge doit procéder selon les principes de l'<ref-law> (<ref-ruling> consid. 2.3.3 p. 268; <ref-ruling> consid. 5.2 p. 122 s.). La peine complémentaire est constituée de la différence entre cette peine d'ensemble et la peine de base, à savoir celle prononcée précédemment (ATF <ref-ruling> consid. 6.1.2 p. 67; arrêt 6B_1141/2017 précité consid. 4.1). En présence d'un concours rétrospectif, le juge doit exceptionnellement exposer au moyen de chiffres comment il a fixé la peine qu'il prononce (<ref-ruling> consid. 2.3.3 p. 268; <ref-ruling> consid. 8.3 p. 105; arrêt 6B_984/2016 du 13 septembre 2017 consid. 3.1.4).
1.2. Aux termes de l'<ref-law>, si, en raison d'un ou de plusieurs actes, l'auteur remplit les conditions de plusieurs peines de même genre, le juge le condamne à la peine de l'infraction la plus grave et l'augmente dans une juste proportion. Il ne peut toutefois excéder de plus de la moitié le maximum de la peine prévue pour cette infraction. Il est en outre lié par le maximum légal de chaque genre de peine.
1.2.1. L'exigence, pour appliquer l'<ref-law>, que les peines soient de même genre, implique que le juge examine, pour chaque infraction commise, la nature de la peine à prononcer pour chacune d'elle. Le prononcé d'une peine d'ensemble en application du principe de l'aggravation contenu à l'<ref-law> n'est ensuite possible que si le juge choisit, dans le cas concret, le même genre de peine pour sanctionner chaque infraction commise (arrêt 6B_559/2018 précité consid. 1.1.1 destiné à la publication; <ref-ruling> consid. 2.2 p. 220; <ref-ruling> IV 2.3.2 p. 267 s.; <ref-ruling> consid. 5.2 p. 122). Que les dispositions pénales applicables prévoient abstraitement des peines de même genre ne suffit pas (<ref-ruling> consid. 2.2 p. 219 s.; <ref-ruling> consid. 5.2 p. 123). Si les sanctions envisagées concrètement ne sont pas du même genre, elles doivent être prononcées cumulativement (<ref-ruling> consid. 2.3.2 p. 267; <ref-ruling> consid. 5.2 p. 122; <ref-ruling> consid. 4.3.1 p. 58). La peine privative de liberté et la peine pécuniaire ne sont pas des sanctions du même genre (arrêt 6B_559/2018 précité consid. 1.1.1; <ref-ruling> consid. 2.2 p. 220; <ref-ruling> consid. 4.3.1 p. 58).
La peine pécuniaire constitue la sanction principale dans le domaine de la petite et moyenne criminalité, les peines privatives de liberté ne devant être prononcées que lorsque l'Etat ne peut garantir d'une autre manière la sécurité publique. Lorsque tant une peine pécuniaire qu'une peine privative de liberté entrent en considération et que toutes deux apparaissent sanctionner de manière équivalente la faute commise, il y a en règle générale lieu, conformément au principe de la proportionnalité, d'accorder la priorité à la première, qui porte atteinte au patrimoine de l'intéressé et constitue donc une sanction plus clémente qu'une peine privative de liberté, qui l'atteint dans sa liberté personnelle (arrêt 6B_559/2018 précité consid. 1.1.1; <ref-ruling> consid. 4.2.2 p. 100 s.). Le choix de la sanction doit être opéré en tenant compte au premier chef de l'adéquation de la peine, de ses effets sur l'auteur et sur sa situation sociale ainsi que de son efficacité du point de vue de la prévention (arrêt 6B_559/2018 précité consid. 1.1.1; <ref-ruling> consid. 2.3.4 p. 301; <ref-ruling> consid. 4.2 p. 100). La faute de l'auteur n'est en revanche pas déterminante (<ref-ruling> consid. 2.3.4 p. 301).
1.2.2. Lorsqu'il s'avère que les peines envisagées concrètement sont de même genre, l'<ref-law> impose au juge, dans un premier temps, de fixer la peine pour l'infraction abstraitement - d'après le cadre légal fixé pour chaque infraction à sanctionner - la plus grave, en tenant compte de tous les éléments pertinents, parmi lesquels les circonstances aggravantes ou atténuantes. Dans un second temps, il augmentera cette peine pour sanctionner chacune des autres infractions, en tenant là aussi compte de toutes les circonstances y relatives (arrêt 6B_559/2018 précité consid. 1.1.2; cf. <ref-ruling> consid. 2b p. 104; arrêt 6B_688/2014 du 22 décembre 2017 consid. 27.2.1; plus récemment arrêt 6B_1175/2017 du 11 avril 2018 consid. 2.1).
La jurisprudence avait admis que le juge puisse s'écarter de cette méthode concrète dans plusieurs configurations (cf. <ref-ruling> consid. 2.4 p. 222 s.), notamment lorsque les différentes infractions étaient étroitement liées sur les plans matériel et temporel, de sorte qu'elles ne pouvaient être séparées et être jugées pour elles seules (arrêt 6B_1216/2017 du 11 juin 2018 consid. 1.1.1). Le Tribunal fédéral avait également considéré, exceptionnellement, conforme à l'<ref-law> une peine d'ensemble fixée sans qu'une peine hypothétique ait été préalablement arrêtée pour chaque infraction commise, dans un cas où aucune des infractions à trancher n'était clairement plus grave que les autres (<ref-ruling> consid. 2.4 p. 222 s. se référant à l'arrêt 6B_499/2013 du 22 octobre 2013 consid. 1.8). Au vu des critiques formulées quant à l'insécurité que ces exceptions créaient et afin d'assurer une application uniforme de l'<ref-law>, le Tribunal fédéral est toutefois revenu sur ce point en soulignant que cette disposition ne prévoyait aucune exception (arrêt 6B_559/2018 précité consid. 1.1.2; cf. <ref-ruling> consid. 3.5.4 p. 235 ss).
1.3. En l'espèce, la cour cantonale a d'abord relevé à juste titre que le premier juge avait fixé une peine privative de liberté de 150 jours " expressément complémentaire " aux peines privatives de liberté de huit mois et de 20 jours prononcées les 9 août 2016 et 8 novembre 2016 respectivement, sans tenir compte des principes découlant de la jurisprudence relatifs à l'<ref-law>. En effet, avant de fixer la quotité de la peine complémentaire infligée, le premier juge n'avait pas procédé à une évaluation d'une peine d'ensemble théorique, en se plaçant dans la situation d'un juge qui aurait eu à connaître de l'ensemble des infractions en cause. La cour cantonale, quant à elle, a jugé qu'un juge saisi de l'ensemble des faits aurait prononcé une peine privative de liberté d'ensemble de 14 mois. Elle s'est fondée sur la culpabilité " écrasante " du recourant, sur ses nombreux antécédents, sur son absence complète de prise de conscience ainsi que sur le fait qu'il n'existait aucune circonstance à décharge. Elle a ensuite relevé que la peine complémentaire aurait dû être fixée à cinq mois et dix jours, en additionnant les peines de huit mois et de 20 jours prononcées le 9 août 2016 et le 8 novembre 2016 respectivement. En application de l'art. 391 al. 1 1ère phrase CPP, elle n'a cependant pas réformé la peine in pejus, soit au détriment du prévenu, en y ajoutant dix jours. Elle a dès lors confirmé la peine privative de liberté de 150 jours prononcée par le premier juge, par substitution de motifs.
1.4. L'approche de la cour cantonale ne peut être suivie. Elle ne pouvait pas, dans le cas d'espèce, fixer une peine hypothétique unique de 14 mois en procédant à un examen global de toutes les infractions à juger et confirmer le prononcé d'une peine privative de liberté de 150 jours. Force est de constater qu'elle n'a pas examiné, conformément à la jurisprudence précitée (supra consid. 1.1.1 et 1.2.1), pour chaque infraction commise, la nature de la peine à prononcer pour chacune d'elle. Or, dans le présent cas, le recourant a notamment été condamné pour voies de fait, infraction passible d'une amende, et injure, infraction passible d'une peine pécuniaire. Les conditions de l'<ref-law>, à savoir qu'il doit s'agir de peines du même genre que la peine de base (cf. <ref-ruling> consid. 2.4.2 p. 269) - soit en l'occurrence une peine privative de liberté - n'étaient pas remplies. Ainsi, conformément à la jurisprudence précitée (cf. supra consid. 1.2.1), s'agissant de peines qui ne sont pas du même genre - amende et peine pécuniaire -, celles-ci auraient dû être prononcées cumulativement. En ce qui concerne les autres infractions pour lesquelles le recourant a été condamné - lésions corporelles simples, dommages à la propriété et infraction à la Loi fédérale sur les étrangers - lesquelles sont passibles d'une peine privative de liberté ou d'une peine pécuniaire, l'application de l'<ref-law> n'entrait en considération que si la cour cantonale envisageait, dans le cas concret, une peine privative de liberté pour chacune de ces infractions. Il lui incombait donc préalablement d'examiner pour chacune de ces infractions si elle justifiait concrètement une peine pécuniaire ou une peine privative de liberté (cf. supra consid. 1.2.1). Ce n'est que si les peines hypothétiques envisagées pour ces infractions étaient des peines privatives de liberté que la cour cantonale pouvait appliquer l'<ref-law> et fixer une peine d'ensemble hypothétique.
Il ressort de ce qui précède que, si les conditions pour prononcer une peine complémentaire au sens de l'<ref-law> sont effectivement réalisées, il incombera à la cour cantonale, dans un premier temps, de fixer la peine d'ensemble hypothétique, en augmentant la peine de base déjà entrée en force (et sur laquelle le deuxième juge ne peut pas revenir; cf. <ref-ruling> consid. 2.4.1 p. 268 s.) dans une juste proportion pour tenir compte des différentes peines à prononcer pour les nouvelles infractions à juger, d'après les principes de l'<ref-law> (cf. sur ce point <ref-ruling> consid. 2.4.4 p. 271 s.). Dans un second temps, afin de déterminer la peine complémentaire, elle déduira la peine de base entrée en force de la peine d'ensemble hypothétique.
2.
Au vu de ce qui précède, le recours doit être admis, le jugement attaqué annulé et la cause renvoyée à l'autorité précédente pour nouvelle décision dans le sens des considérants. Le recourant qui obtient gain de cause ne supportera pas de frais judiciaires (<ref-law>). Il a droit à des dépens à la charge du canton de Vaud (<ref-law>). Cela rend sans objet sa demande d'assistance judiciaire.
La cause étant tranchée, la requête d'effet suspensif devient sans objet. Elle l'était, au demeurant, de toute manière en vertu de l'art. 103al. 2 let. b LTF.

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est admis, le jugement attaqué est annulé et la cause est renvoyée à l'autorité cantonale pour nouvelle décision.
2.
Il n'est pas perçu de frais judiciaires.
3.
Le canton de Vaud versera à l'avocat du recourant une indemnité de 3'000 fr. à titre de dépens pour la procédure devant le Tribunal fédéral.
4.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud.
Lausanne, le 5 février 2019
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
La Greffière : Thalmann